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: