Was sind die Standardwerte für $ PATH?

12

Unter Mac OS X sind die Standardwerte $PATH:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Was sind die Standardwerte unter Linux?

sonnuforevis
quelle

Antworten:

17

Bei einer Standard-Ubuntu-Desktop-Installation $PATHist:

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Aber in einer minimalen Chroot-Umgebung, die von erstellt wurde debootstrap, $PATHenthält nur:

# echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin
andrewsomething
quelle
3

In den Muscheln sind Pfade eingebaut

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Dann ist der Standardpfad für Ubuntu:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Braiam
quelle
3

Umgebungspfadwerte werden in der .bashrc- Datei in Ubuntu gespeichert .

Die systemweite PATH-Variable ist in definiert /etc/environment

Avinash Raj
quelle
3

Es gibt einen einfachen Weg, um herauszufinden:

printenv

Oder direkter:

echo $PATH

Wenn Sie jedoch nur nach schnellen Informationen suchen, legt Ubuntu normalerweise den Pfad fest zu:

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / bin / X11: / usr / games:

Bei Fragen wie diesen können Sie die Antwort normalerweise durch Lesen der Bibel herausfinden .

Brian Grogan Jr.
quelle
2

Je nachdem, welches Linux Sie verwenden, kann dies unterschiedlich sein. Wenn Sie sich bereits bei einem Linux angemeldet haben, geben Sie einfach 'env' ein, um Ihre Umgebungsvariablen anzuzeigen.

Wenn Sie wissen möchten, wie die Variable PATH env erstellt wird, sehen Sie sich .bashrc und .bash_profile in Ihrem Home-Verzeichnis an. Wenn Sie neugieriger sind, können Sie auch / etc / profile, /etc/profile.d/* (falls vorhanden) und das Handbuch für bash (man bash) lesen.

Jason
quelle
2

bashwird PATHauf einen fest codierten Standardwert gesetzt, wenn er nicht in der Umgebung festgelegt ist:

$ env -i bash -c 'echo $PATH'
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

Mit dem stringsDienstprogramm können wir überprüfen, ob dieser Wert tatsächlich fest codiert ist und nicht aus der Umgebung oder einer Datei gelesen wird :

$ strings /bin/bash | grep /usr/sbin
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.

Auf meinem Arch Linux-Computer wird jedoch ein anderes Ergebnis angezeigt:

$ env -i bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/bin

Es sieht also so aus, als ob diese Standardeinstellung zum Zeitpunkt der bashErstellung der Binärdatei ausgewählt wurde, was von der verwendeten Linux-Distribution abhängt.

Vladimir Panteleev
quelle
Dies ist die einzige Antwort, die die Shell und Verteilungen erwähnt. Ich bin auf die Frage gestoßen, weil ich PATH-Probleme in Ubuntu-Containern aussortiere. Der "Standardpfad" hängt von der Shell (Bash, Sh usw.) ab und davon, ob sie interaktiv geladen wird oder nicht und ob es sich um eine Login-Shell handelt. Es ist keine einfache Antwort. Ein großes Lob für die Erwähnung der fest codierten Zeichenfolgen in der Binärdatei.
init_js
1

Um den Standardpfad anzuzeigen, verwenden Sie die folgenden Antworten:

echo $PATH

Zum Bearbeiten verwenden Sie:

gedit ~/.bashrc

Diese Standardvariablen PATHsind unter definiert /etc/enviroment.

Sukupa91
quelle