This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: /usr/bin/env - Incorrect parsing of #! line?


My contribution is running the above script on a HPUX-10.20, so you may
take a better decision:

#!/usr/bin/env perl -v

This gives:
No such file or directory: perl -v

On Solaris2, this gives:
This is perl, v5.6.0 built for sun4-solaris

...

On Linux:
/usr/bin/env: perl -v: No such file or directory

On cygwin:
/usr/bin/env: perl -v: No such file or directory

So that only works fine on Solaris. I really don't know if there is a good
reason to scramble all arguments into one, and what's the story behind...

A remember that we were limited to 32 (or 31?) characters onto this line
some years ago :-) without advertising so it was happening that only on
character in the switch was missing for the interpreter (try to debug
that!)

Gerald S. Williams writes:
] 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:gsw@agere.com 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/

-- 
           *., ,.**  Benoit Rochefort  *., ,.**

--
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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]