Наиболее важные установки находятся в глобальных файлах инициализации: /etc/csh.login для tcsh и /etc/profile для bash.
Исключения - программы, которые не могут получить правильные пути от этих файлов - это команды ssh, rsh, X window manager (явно не запускает login shell), ,команды вызываемые inittab, задачи запускаемые cron, демоны, подобные magic filters запускаемые lprd, WWW CGI скрипты и т.д.
Если пути установлены в /etc/csh.cshrc, то они правильные, даже когда rsh или ssh выполняют команду на удаленной машине с аккаунтом, использующим tcsh/csh. Однако, не возможно установить пути, если аккаунт использует bash/sh.
Возможно комбинировать установку путей в один файл, например, в файл /etc/environment-common. Теперь пишем:
${EXPORT}PATH${EQ}/bin:/usr/bin:/sbin:/usr/sbin:/usr/bin/X11:/usr/local/bin:/usr/games:. |
Это можно использовать из /etc/csh.login (для tcsh и csh)
set EQ=" " set EXPORT="setenv " source /etc/environment-common |
И из /etc/profile (для bash, не работает для обычного sh)
EQ='=' EXPORT="export " . /etc/environment-common |
И из /etc/environment (для XDM)
EQ="=" EXPORT="export " . /etc/environment-common |
Такая стратегия, главным образом, работает, но ssh будет выдавать сообщения об ошибках в /etc/environment (на определения EQ и EXPORT). И еще, rsh-команды, выполняемые в bash, не будут получать этот путь.