Subject: RE: /usr/bin/env - Incorrect parsing of #! line?
From: "Gerald S. Williams" <[email-masked]>
To: <[email-masked]>
Cc: "David Gluss" <[email-masked]>, "Peter J. Acklam" <[email-masked]>
Date: Wed, 13 Feb 2002 09:25:41 -0500

I think DG's and PJA's original assessment was correct and
BASH should be modified. Support for cross-platform scripts
is important, and the #!/bin/env trick is used frequently.

It is also not limited to env--any time you use multiple
arguments to #! you get into trouble. For example, the
following fails:

#!/bin/python -tt -x
print "hello, world"

To avoid this, the scripting program would have to take
special measures to split arguments containing spaces
into multiple arguments. Perl does this, but defeating
the shell's argument parser like this has got to be
dangerous and no doubt involves some degree of magic.
And as we've seen, that still doesn't help if you're
using env to find perl.

Solaris (System V) systems don't combine #! arguments
that way. I don't currently have access to any, but from
what I can recall, I'm pretty sure that SunOS (BSD) and
the various flavors of HP and VAX UNIXes all work like
Solaris in this regard.

Ironically, this difference affects portability between
Linux/Cygwin and traditional UNIX systems, but doesn't
affect Windoze compatibility since only the extensions
matter there and #! is ignored.

I have also seen examples in popular Unix books (such
as the O'Reilly nutshell books) that rely on multiple
arguments.

-Jerry

-O Gerald S. Williams, 22Y-103GA : mailto:[email-masked] O-
-O AGERE SYSTEMS, 555 UNION BLVD : office:610-712-8661  O-
-O ALLENTOWN, PA, USA 18109-3286 : mobile:908-672-7592  O-

Christopher Faylor wrote:
> > I think you're misinterpreting the problem.  If it works the same way
> > on linux and on cygwin, then there is nothing to fix.

David Gluss wrote:
> Hmm.  You're right about that.  In that case I will do nothing.
> Of course I've always objected to that behavior...but so it is.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/