delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1996/12/05/14:20:14

From: fjh AT cs DOT mu DOT OZ DOT AU (Fergus Henderson)
Subject: Re: why does /bin have to be *first* in the PATH?
5 Dec 1996 14:20:14 -0800 :
Sender: daemon AT cygnus DOT com
Approved: cygnus DOT gnu-win32 AT cygnus DOT com
Distribution: cygnus
Message-ID: <199612052051.HAA27235.cygnus.gnu-win32@murlibobo.cs.mu.OZ.AU>
Original-To: dje AT cygnus DOT com (Doug Evans)
Original-Cc: gnu-win32 AT cygnus DOT com (gnu-win32)
In-Reply-To: <199612052026.MAA19781@canuck.cygnus.com> from "Doug Evans" at Dec 5, 96 12:26:28 pm
X-Mailer: ELM [version 2.4 PL24]
Original-Sender: owner-gnu-win32 AT cygnus DOT com

Doug Evans wrote:
> 
> [Fergus wrote:]
>    I have programs that rely on the ability to do
> 
> 	   PATH=../scripts:$PATH some_script
> 
>    This breaks in gnu-win32 version b16.
> 
> Having /bin be first in PATH was a workaround to a
> bug that has since been fixed [or at least was fixed at one point].

Well, b16 still requires /bin be first.

Here's how to reproduce the bug:

	$ cd /tmp
	$ cat > foo <<EOF
	> #!/bin/sh
	> echo "this is foo"
	> EOF
	$ cat > Makefile <<EOF
	> do_foo:
	> ./foo
	> EOF
	$ PATH=/bin:$PATH make do_foo
	this is foo
	$ PATH=/blah:/bin:$PATH make do_foo
	./foo
	make: ./foo: Command not found
	make: *** [do_foo] Error 127

Specifically, if `/bin' is not first, and you invoke execve() on a
shell script (as `make' does in the above example) then the call to
`find_exec ("sh", ...)' in spawn.cc fails to expand "sh" to
"/bin/sh".

-- 
Fergus Henderson <fjh AT cs DOT mu DOT oz DOT au>   |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>   |  of excellence is a lethal habit"
PGP: finger fjh AT 128 DOT 250 DOT 37 DOT 3         |     -- the last words of T. S. Garp.
-
For help on using this list, send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019