Pourquoi / usr / local / games est-il après / usr / games dans le PATH par défaut?

7

La valeur par défaut de la variable d'environnement PATH dans Ubuntu (au moins 13.10) pour un administrateur (utilisateur du groupe sudo ) après la connexion à l'environnement de bureau est:

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

/ usr / local / sbin et / usr / local / bin apparaissent avant / usr / sbin et / usr / bin . Cependant, / usr / local / games apparaît après / usr / games .

Y a-t-il une raison à cela? Ou c'est juste une faute de frappe?

Plus d'informations

  • PATH après la connexion avec su - user :

    /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    
  • PATH par défaut de l'utilisateur normal / administrateur après la connexion à une console virtuelle:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    
  • PATH par défaut pour l'utilisateur root (après s'être connecté avec sudo -i ; je n'ai pas essayé d’activer l’utilisateur root et de se connecter via une console virtuelle):

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
  • Contenu de / etc / environment :

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    
  • Ligne pertinente de / etc / sudoers :

    Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    
  • Lignes pertinentes 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
    

Répétez la question principale: quelle est la raison pour laquelle / usr / local / games apparaît après / usr / games , au lieu de avant, dans la valeur par défaut PATH ?

Et une question connexe: d’où vient la valeur de PATH ? Il semble que / etc / environment et /etc/login.defs soient tous deux utilisés dans des situations différentes.

    
posée Braiam 18.02.2014 - 14:06
la source

1 réponse

4

Je ne peux pas trouver de raison autre que: c'est une erreur.

D'après ce que je peux voir, /usr/local/games est un ajout assez tardif à /etc/environment . Une de mes machines 12.04 ne l’a pas.

J'avais vraiment du mal à trouver d'où venait /etc/environment . Il s'avère que ce n'est pas un fichier qui est packagé, il est créé au moment de l'installation (je suppose pour éviter de nuire aux configurations existantes lors des mises à niveau). Grâce à cette réponse sur Unix.SE , nous constatons qu’elle provient de libpam-modules 's postinst script.

# 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

Alors oui, je vous suggère de signaler un bogue sur pam .

    
réponse donnée Oli 18.02.2014 - 14:47
la source

Lire d'autres questions sur les étiquettes