Wenn ich $ PATH wiedergebe, 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 / path von der Variablen $ PATH?
/etc/paths
in meinem, aber ich renne10.4.11
und die Dinge haben sich wahrscheinlich seitdem geändert/etc/paths
wird verwendet , um die Standardeinstellung zu generieren$PATH
, die Sie später ändern können~/.bashrc
oder~/.profile
Antworten:
/etc/paths
ist Teil dessen, was zum Einrichten von$PATH
Shell-Prozessen verwendet wird. Wenn Sie ein neues Terminalfenster öffnen, wird es gestartetbash
, in dem mehrere Startskripte ausgeführt werden:/etc/profile
AND~/.bash_profile
OR (falls nicht vorhanden)~/.bash_login
OR (falls nicht vorhanden)~/.profile
. Diese Skripte richten die Shell-Umgebung ein, einschließlich$PATH
.Eines der Dinge
/etc/profile
ist das Ausführen/usr/libexec/path_helper
, das/etc/paths
alle Dateien liest und/etc/paths.d
ihren Inhalt hinzufügt$PATH
. Dies ist jedoch nur ein Ausgangspunkt; Ihr eigenes Startskript (falls vorhanden) kann es ergänzen$PATH
, bearbeiten, vollständig ersetzen usw.Es sieht für mich so aus, als würde Ihr Startskript (und / oder die Dinge, die es ausführt) dem Basissatz, aus dem es stammt, eine Reihe von Einträgen hinzufügen
/etc/paths
. "Users / myusername / .node_modules_global / bin: /Users/mac/.node_modules_global/bin:" wird am Anfang von hinzugefügt$PATH
(dh diese Verzeichnisse werden zuerst durchsucht) 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 Vorgang zum Einrichten
$PATH
nur für Bash-Login-Shells. Alles, was von einer Bash-Shell ausgeführt wird, wird davon erben$PATH
, also haben Sie wahrscheinlich im Wesentlichen dasselbe. Bash-Nicht-Login-Shells folgen einem etwas anderen Einrichtungsprozess. Andere Shells und Dinge, die überhaupt nicht von einer Shell aus gestartet wurden (z. B. Cron-Jobs), können völlig anders sein$PATHs
.quelle
/usr/local/bin/bash
wie von installiertbrew
, ohne das-l
Argument)/usr/libexec/path_helper
keine Shells verwendet werden und/usr/local/bin
standardmäßig nicht in der enthalten sind$PATH
. Zur Verwendungpath_helper
in einem Skript oder interaktiv lautet der Befehleval $(/usr/libexec/path_helper)
.Die ersten Stellen, an denen ich nach Änderungen suchen würde, sind:
Wenn Sie etwas verwenden, das nicht Bash ist, überprüfen Sie die Konfigurationsdateien, um festzustellen, ob PATH erwähnt wird.
quelle