Почему / usr / local / games после / usr / games находится в стандартном PATH?

Значение по умолчанию переменной среды 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 оба используются в разных ситуациях.

7
задан 18 February 2014 в 18:30

1 ответ

Я не могу придумать никакой другой причины, кроме: это ошибка.

Из того, что я вижу, /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

Так что да, я бы предложил сообщить об ошибке против Пэм .

0
ответ дан 18 February 2014 в 18:30
  • 1
    @A.B. Я все еще получаю ошибку несмотря на попытку вышеупомянутого решения. Идеи? – Kalamalka Kid 13 January 2016 в 14:37

Другие вопросы по тегам:

Похожие вопросы: