Por que o / usr / local / games depois de / usr / games está no PATH padrão?

7

O valor padrão da variável de ambiente PATH no Ubuntu (13.10, pelo menos) para um administrador (usuário no grupo sudo ) depois de efetuar login no ambiente de área de trabalho é:

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

/ usr / local / sbin e / usr / local / bin aparecem antes / usr / sbin e / usr / bin . No entanto, / usr / local / games aparece após / usr / games .

Existe uma razão para isso? Ou é apenas um erro de digitação?

Mais informações

  • Padrão do usuário normal / administrador PATH após o registro com su - user :

    /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    
  • Padrão do usuário normal / administrador PATH após o login em um console virtual:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    
  • Padrão PATH para o usuário root (depois de fazer login com sudo -i ; não tenho tentou habilitar o usuário root e fazer o login através de um console virtual):

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
  • Conteúdo de / etc / environment :

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    
  • Linha relevante de / etc / sudoers :

    Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    
  • Linhas relevantes de /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
    

Repetindo a pergunta principal: qual é a razão para / usr / local / games aparecer depois de / usr / games , em vez de antes, no padrão PATH ?

E uma questão relacionada: de onde vem o valor de PATH ? Parece que / etc / environment e /etc/login.defs são usados em diferentes situações.

    
por Braiam 18.02.2014 / 14:06

1 resposta

4

Eu não consigo encontrar outra razão além de: é um erro.

Pelo que vejo, /usr/local/games é uma adição tardia a /etc/environment . Uma máquina 12.04 minha não tem isso.

Eu estava realmente lutando para descobrir de onde vem /etc/environment . Acontece que não é um arquivo que é empacotado, é criado no momento da instalação (suponho que evite prejudicar as configurações existentes durante os upgrades). Graças a esta resposta no Unix.SE , podemos ver que ela vem de libpam-modules 's postinst roteiro.

# Add PATH to /etc/environment if it's not present there or in
# /etc/security/pam_env.conf
if [ "" = "configure" ] && dpkg --compare-versions "" 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

Então, sugiro informar um bug contra o pam .

    
por Oli 18.02.2014 / 14:47