[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

default search PATH



I hope this is the right place to post this--it seems to have user,
policy, and developer aspects, so I just defaulted to the list I'm
subscribed to.  I'm not a Debian developer, though. 

I've used Debian 2.0 and 2.1 for a few months.  I've been irked by the 
fact that users wind up with a different search PATH depending on what 
shell they use and how they log on to the system (examples below).  
Looking through the documentation, I found in the User Tutorial 
(http://www.debian.org/~hp/tutorial/debian-tutorial.html/ch-shell.html#s-shell-path):

    The default [$PATH] value on Debian systems is:

    /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

Ok, so maybe some package just made a mistake.  However, upon further 
investigation ...

1.  There is no mention of the PATH in the Policy Manual.
2.  There does not seem to be any coordinated effort to do something sane.
(3.  I didn't find any discussion or explanation of 1. and 2. in the list 
archives)

I was quite surprised to find this issue unaddressed, since Debian is 
well thought-out in most respects.  I hope some developers on this list 
are interested in rectifying it.  If so, here's some more background 
information and some sugestions.

- login (login-980403-0.3) has the path /bin:/usr/bin compiled in, and the
configuration file /etc/login.defs sets the path to the same for non-root
users.

- sshd (ssh-1.2.26-1) has the path /usr/bin:/bin:/usr/bin compiled in.

- /etc/profile (bash-2.01.1-4) unconditionally sets the path to the one 
in the Tutorial.  /etc/profile is sourced at login.

- /etc/zshenv (zsh-3.1.2-8) does:

if [[ -z "$PATH" || "$PATH" == "/bin:/usr/bin" ]]
then export PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games"
fi

/etc/zshenv is sourced on every invocation of zsh

- tcsh (tcsh-6.07.06-6) is oblivious:

% grep -i path /etc/*csh*
%

You can already see that the interaction between login, sshd, and shells 
can produce several different $PATH's.  I'm out of energy now, but I can 
only imagine what I'd find looking into xdm, rsh, other shells, etc.

As for a solution...  In /etc/login.defs, a comment suggests that login
should set a minimal path, and shell startup files should set a more
complete path.  If that were agreed upon, it should be the responsibility
of each shell packager to make sure the shell _unconditionally_ sets the
path to the default Debian path--but only for login shells.  xdm (and
workalikes) should probably be considered a shell for this purpose, though
I don't know xdm that well.  Additionally, the minimal path set by login 
should be standardized, and sshd et al should set the same minimal path.

I hope something (not necessarily the above, of course) can be agreed upon
and added to policy.  It would remove one of the most visible
inconsistencies in Debian.  But whether it is policy or not, I hope that
packagers will correct the obvious blunders--such as the silly path set 
by sshd and the (clearly?) wrong behaviour by zsh and tcsh.  I filed a 
bug against sshd when I first started looking into this issue, but I have 
not received a response.  Maybe if I'm encouraged I'll file more bugs.

Andrew


Reply to: