Subject: Re: bin/6794: sh(1) . (dot) command reads files in current directory if not found in the PATH
To: None <netbsd-bugs@netbsd.org>
From: Geoff Wing <mason@primenet.com.au>
List: netbsd-bugs
Date: 01/13/1999 08:47:29
ITOH Yasufumi <yasufu-i@is.aist-nara.ac.jp> typed:
:In article <19990112183320.A17763@noc.untraceable.net>
:twofsonet@graffiti.com writes:
:> > 1. The . (dot) command of sh(1) reads file from current directory
:> >    if the argument doesn't contain slashes and the named file
:> >    is not found in PATH.
:> >    This may be a potential security problem.
:> problem or not...i believe this is the historical behavior and
:> shouldn't be removed.

:Shell searches the path and then the current directory
:	zsh 3.0.4	"." command
:Shell does not look at the command search path
:	zsh 3.0.4	"source" command

You've been fibbing about zsh:
 ``.'' : if no slash in command, then search path
 ``source'' : as ``.'' but cwd is preprended to path

POSIX (older draft) says:

 If file does not contain a slash, the shell shall use the search path
 specified by PATH to find the directory containing file.  Unlike normal
 command search, however, the file searched for by the dot utility need
 not be executable.  If no readable file is found, a noninteractive shell
 shall abort; an interactive shell shall write a diagnostic message to
 standard error, but this condition shall not be considered a syntax
 error.

 [...stuff deleted...]

 BEGIN_RATIONALE

 3.14.4.1  dot Rationale. (This subclause is not a part of P1003.2)

 Some older implementations searched the current directory for the file,
 even if the value of PATH disallowed it.  This behavior was omitted from
 POSIX.2 due to concerns about introducing the susceptibility to trojan
 horses that the user might be trying to avoid by leaving dot out of PATH.

 [...stuff deleted...]

 END_RATIONALE

-- 
Geoff Wing   <gcw@pobox.com>            Mobile : 0412 162 441
Work URL: http://www.primenet.com.au/   Ego URL: http://pobox.com/~gcw/