Was ist der Unterschied zwischen „echo $PATH“ und /etc/paths?

Was ist der Unterschied zwischen „echo $PATH“ und /etc/paths?

Wenn ich $PATH echoe, erhalte ich Folgendes: Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools.

Ich möchte einige Pfade daraus entfernen, aber wenn ich die Datei mit dem Befehl öffne vim /etc/paths, erhalte ich die folgenden Ergebnisse:

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

Unterscheidet sich die Datei /etc/paths von der Variable $PATH?

Antwort1

/etc/pathsist Teil dessen, was zum Einrichten $PATHvon Shell-Prozessen verwendet wird. Wenn Sie ein neues Terminalfenster öffnen, wird gestartet bash, das mehrere Startskripte ausführt: /etc/profileAND ~/.bash_profileOR (wenn das nicht existiert) ~/.bash_loginOR (wenn das auch nicht existiert) ~/.profile. Diese Skripte richten die Shell-Umgebung ein, einschließlich $PATH.

Eine der Aktionen /etc/profilebesteht darin, auszuführen. Dabei werden alle Dateien in /usr/libexec/path_helpergelesen und deren Inhalt zu hinzugefügt . Dies ist jedoch nur ein Ausgangspunkt. Ihr eigenes Startskript (falls vorhanden) kann zu hinzufügen , es bearbeiten, vollständig ersetzen usw./etc/paths/etc/paths.d$PATH$PATH

Für mich sieht es so aus, als ob Ihr Startskript (und/oder die Dinge, die es ausführt) dem Basissatz, den es erhält, eine Reihe von Einträgen hinzufügt /etc/paths. „Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:“ wird am Anfang hinzugefügt $PATH(was bedeutet, dass diese Verzeichnisse zuerst durchsucht werden) und „:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools“ wird am Ende hinzugefügt. Wenn Sie genau wissen möchten, was sie hinzufügt, müssen Sie sich Ihr Startskript ansehen.

Übrigens gilt dieser Einrichtungsprozess $PATHnur für Bash-Login-Shells. Alles, was von einer Bash-Shell ausgeführt wird, erbt $PATHvon dieser und hat daher wahrscheinlich im Wesentlichen dasselbe. Bash-Shells ohne Login folgen einem etwas anderen Einrichtungsprozess. Andere Shells und Dinge, die überhaupt nicht von einer Shell gestartet werden (z. B. Cron-Jobs), haben möglicherweise völlig andere $PATHs.

Antwort2

Als erstes würde ich nach Änderungen suchen,

~/.profile
~/.bashrc
~/.bash_profile

Wenn Sie etwas anderes als Bash verwenden, suchen Sie in den entsprechenden Konfigurationsdateien nach Erwähnungen von PATH.

verwandte Informationen