Значение по умолчанию переменной среды PATH
в Ubuntu (по крайней мере, 13.10) для администратора (пользователя из группы sudo
) после входа в среду рабочего стола:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
/ usr / local / sbin и / usr / local / bin появляются до / usr / sbin и / usr / бен . Однако, / usr / local / games появляется после / usr / games .
Есть ли причина для этого? Или это просто опечатка?
Обычный / администратор по умолчанию PATH
после входа в систему с помощью su - user
:
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Обычный / администратор по умолчанию PATH
после входа в виртуальную консоль:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
По умолчанию PATH
для пользователя root
(после входа в систему с помощью sudo -i
; I не пытался включить пользователя root и войти в систему через виртуальную консоль):
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Содержимое / etc / environment :
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Соответствующая строка / etc / sudoers :
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Соответствующие строки / etc / login. defs :
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Повторение основного вопроса: с чем связано появление / usr / local / games после / usr / games вместо ранее заданного по умолчанию значения PATH
?
И связанный с этим вопрос: откуда берется значение PATH
? Похоже, что / etc / environment и /etc/login.defs оба используются в разных ситуациях.
Я не могу придумать никакой другой причины, кроме: это ошибка.
Из того, что я вижу, /usr/local/games
является довольно поздним дополнением к /etc/environment
. У моей машины 12.04 его нет.
Я действительно изо всех сил пытался найти, откуда берется /etc/environment
. Оказывается, это не упакованный файл, а созданный во время установки (я полагаю, чтобы он не повредил существующим конфигурациям во время обновлений). Благодаря этому ответу в Unix.SE , мы можем видеть, что он исходит из скрипта libpam-modules
postinst
.
# Add PATH to /etc/environment if it's not present there or in
# /etc/security/pam_env.conf
if [ "$1" = "configure" ] && dpkg --compare-versions "$2" lt 1.1.3-7ubuntu3; then
if ! grep -qs ^PATH /etc/security/pam_env.conf; then
if ! grep -qs ^PATH= /etc/environment; then
echo 'PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"' >> /etc/environment
elif ! grep -qs "^PATH=.*/usr/local/games" /etc/environment; then
sed -i '/^PATH=/ s,:/usr/games,:/usr/games:/usr/local/games,g' /etc/environment
fi
fi
fi
Так что да, я бы предложил сообщить об ошибке против Пэм .