Warum befindet sich / usr / local / games nach / usr / games im Standardpfad?

7

Der Standardwert der PATHUmgebungsvariablen in Ubuntu (mindestens 13.10) für einen Administrator (Benutzer in der sudoGruppe) nach der Anmeldung bei der Desktop-Umgebung lautet:

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

/ usr / local / sbin und / usr / local / bin erscheinen vor / usr / sbin und / usr / bin . Allerdings / usr / local / games erscheint nach / usr / games .

Gibt es einen Grund dafür? Oder ist es nur ein Tippfehler?

Mehr Informationen

  • Standard / Benutzer des Administrators PATHnach der Anmeldung mit su - user:

    /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    
  • Standard- / Administratorbenutzer-Standard PATHnach Anmeldung an einer virtuellen Konsole:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
    
  • Standard PATHfür den rootBenutzer (nach dem Anmelden mit sudo -i; Ich habe nicht versucht, den Root-Benutzer zu aktivieren und mich über eine virtuelle Konsole anzumelden):

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
  • Inhalt von / etc / environment :

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
    
  • Relevante Zeile von / etc / sudoers :

    Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    
  • Relevante Zeilen von /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
    

Wiederholen der Hauptfrage: Was ist der Grund dafür, dass / usr / local / games in der Standardeinstellung nach / usr / games statt vorher erscheint PATH?

Und eine verwandte Frage: Woher kommt der Wert PATHvon? Es scheint, dass / etc / environment und /etc/login.defs beide in unterschiedlichen Situationen verwendet werden.

Braiam
quelle

Antworten:

4

Ich kann mir keinen anderen Grund einfallen lassen als: Es ist ein Fehler.

Soweit ich sehen kann, /usr/local/gamesist eine ziemlich späte Ergänzung zu /etc/environment. Eine 12.04 Maschine von mir hat es nicht.

Ich hatte wirklich Mühe zu finden, woher ich /etc/environmentkomme. Es stellt sich heraus, dass es sich nicht um eine gepackte Datei handelt, sondern zur Installationszeit erstellt wurde (ich gehe davon aus, dass bei Konfigurationen keine vorhandenen Konfigurationen beschädigt werden). Dank dieser Antwort auf Unix.SE können wir sehen, dass sie aus libpam-modulesdem postinstSkript stammt.

# 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

Also ja, ich würde vorschlagen , einen Fehler gegen Pam zu melden .

Oli
quelle
Das habe ich mir gedacht: ein Fehler / Tippfehler. Vielen Dank für Ihre Antwort! Und danke, dass Sie herausgefunden haben, woher es /etc/environmentkommt, damit ich / wir jetzt einen Fehler gegen ein bestimmtes Paket melden können! Ich werde den Fehler melden und die akzeptierte Antwort später heute (in einigen Stunden) markieren.
2
@BrunoNova Mein Debian hat es in der richtigen Reihenfolge, sollte also etwas Spezielles für Ubuntu sein.
Braiam
1
@Braiam Das ist seltsam, weil die Postinst-Skripte für die Debian Sid-Version und die Ubuntu Trusty-Version völlig unterschiedlich sind (obwohl die installierten Dateien nahezu identisch sind). Woher bezieht Debian seine PATH-Kopie /etc/environment? Könnten Sie sich umschauen?
Oli
grep -C 5 "/etc/environment" /var/lib/dpkg/info/*sollte helfen.
Oli