Bug in #! processing - One More Time
Garance A Drosehn
gad at FreeBSD.org
Sun May 15 19:21:22 PDT 2005
At 4:53 AM -0400 5/15/05, Garance A Drosehn wrote:
>... you might try the following shell script:
>
> #!/usr/bin/env BLAH=aBc BLAH2=OtheR /bin/sh
> #
> echo $BLAH $BLAH2
>
>Assuming your change to works about the same as mine, that script
>should be an infinite loop.
Well, this behavior is the same as what the user would see with
the same script on other OS's. I could add an option to `env'
which script-writers could use to avoid this problem, but I'm not
sure it's worth the trouble...
>It also looks like something goes wrong with /bin/sh when options
>are given on the #!-line, which may be left-over from my previous
>change to it. I haven't tracked that down yet, but I want to
>understand that before committing the fix we want.
Well, `sh' is probably doing the right thing, but the end result
still breaks the `#!'-trick which is documented in some books on
perl and ruby (and python?). So I want to commit a fix to `sh'
which will allow that trick to work, and then I'll commit the
change to imgact_shell.c that I wrote up. Probably commit an
entry to UPDATING at the same time, since the change could
possibly break some people's scripts. Not likely, but possible...
That's at:
http://people.freebsd.org/~gad/imgact_shell.diff
http://people.freebsd.org/~gad/imgact_shell.c
--
Garance Alistair Drosehn = gad at gilead.netel.rpi.edu
Senior Systems Programmer or gad at FreeBSD.org
Rensselaer Polytechnic Institute; Troy, NY; USA
More information about the freebsd-arch
mailing list