This is the mail archive of the
mailing list for the Cygwin project.
Re: Shell script ignores $PATH?!
- From: luke dot kendall at cisra dot canon dot com dot au
- To: cygwin at cygwin dot com
- Date: Wed, 6 Oct 2004 09:48:56 +1000 (EST)
- Subject: Re: Shell script ignores $PATH?!
On 5 Oct, Brian Dessent wrote:
> If you want to specify what shell is used to run a script you either
> need to specify it in the shebang of the script (#!/path/to/shell) or
> you need to start that shell explicitly (/path/to/shell
> /path/to/script). If you try to execute a script with no shebang then
> the behavoir is going to be system-dependent. On cygwin that means
> defaulting to /bin/sh, as you can see from spawn.cc:spawn_guts()
> if (buf != '#' || buf != '!')
> pgm = (char *) "/bin/sh";
> arg1 = NULL;
It'd be nicer if it instead looked for sh in PATH, but the above is
perfectly reasonable. I think it's entirely fair that the behaviour is
system dependent: I agree that what I was doing was too ambiguous.
Now that I know the cause, I can cope.
BTW, I've wondered for many years why the #! notation doesn't allow a
pathless program name, to mean "look it up in PATH" in the normal way.
The number of times I've changed "#!/usr/local/bin/perl" to
"#!/opt/bin/perl" or "#!/usr/bin/perl" and back again, and for other
interpreters, is quite large. Seems like an obvious long-standing
missing Unix feature. (Apologies for the off-topic rant.)
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html