Was sind die Standardwerte für $ PATH?


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

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

3

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

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


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 .


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.


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.