Das einfache Zeug
PATH=$PATH:~/opt/bin
oder
PATH=~/opt/bin:$PATH
Je nachdem, ob Sie ~/opt/binam Ende hinzufügen möchten (um nach allen anderen Verzeichnissen gesucht zu werden, falls es in mehreren Verzeichnissen ein gleichnamiges Programm gibt) oder am Anfang (um vor allen anderen Verzeichnissen gesucht zu werden).
Sie können mehrere Einträge gleichzeitig hinzufügen. PATH=$PATH:~/opt/bin:~/opt/node/binoder abweichungen von der bestellung funktionieren einwandfrei. Nicht exportam Anfang der Zeile einfügen, da dies zusätzliche Komplikationen mit sich bringt (siehe unten unter „Hinweise zu anderen Muscheln als Bash“).
Wenn Ihr PATHSystem aus vielen verschiedenen Komponenten besteht, werden möglicherweise doppelte Einträge angezeigt. Weitere Informationen finden Sie unter So fügen Sie den Pfad des Basisverzeichnisses hinzu, der von Unix ermittelt werden soll. und Entfernen Sie doppelte $ PATH-Einträge mit dem Befehl awk , um zu vermeiden, dass Duplikate hinzugefügt oder entfernt werden.
Einige Distributionen fügen ~/binIhren PATH übrigens automatisch hinzu, falls vorhanden.
Wo soll ich es hinstellen?
Setzen Sie die zu ändernde Zeile PATHein ~/.profile, oder setzen Sie sie ein, ~/.bash_profilewenn Sie dies möchten.
Beachten Sie, dass ~/.bash_rcdies von keinem Programm gelesen wird und dass ~/.bashrces sich um die Konfigurationsdatei interaktiver Instanzen von bash handelt. Sie sollten keine Umgebungsvariablen in definieren ~/.bashrc. Der richtige Ort zum Definieren von Umgebungsvariablen wie PATHist ~/.profile(oder ~/.bash_profilewenn Sie sich nicht für andere Shells als bash interessieren). Siehe Was ist der Unterschied zwischen ihnen und was soll ich verwenden?
Setzen Sie es nicht in /etc/environmentoder ~/.pam_environment: Dies sind keine Shell-Dateien, Sie können keine Ersetzungen wie $PATHdort verwenden. In diesen Dateien können Sie eine Variable nur überschreiben, nicht jedoch hinzufügen.
Mögliche Komplikationen bei einigen Systemskripten
Dies ist nicht erforderlich, exportwenn sich die Variable bereits in der Umgebung befindet. Jede Änderung des Werts der Variablen PATHwirkt sich auf die Umgebung aus. Alle Unix-Systeme haben es sehr früh eingestellt (normalerweise sogar im ersten Prozess).
Bei der Anmeldung können Sie sich darauf verlassen, dass Sie sich PATHbereits in der Umgebung befinden und einige Systemverzeichnisse enthalten. Wenn Sie ein Skript schreiben, das möglicherweise vorzeitig ausgeführt wird, während Sie eine virtuelle Umgebung einrichten , müssen Sie möglicherweise sicherstellen, dass PATHes nicht leer und exportiert ist: Wenn PATHes immer noch nicht gesetzt ist, wird etwas wie auf und die leere Komponente gesetzt am anfang steht das aktuelle verzeichnis (like ).PATH=$PATH:/some/directoryPATH:/some/directory.:/some/directory
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi
Anmerkungen zu anderen Muscheln als Bash
In bash, ksh und zsh, exportist eine spezielle Syntax, und beide PATH=~/opt/bin:$PATHund export PATH=~/opt/bin:$PATHdas Richtige zu tun , auch. In anderen Bourne / POSIX-Shells wie dash ( /bin/shauf vielen Systemen) wird exportes als gewöhnlicher Befehl analysiert, der zwei Unterschiede impliziert:
So in Shells wie Bindestrich, export PATH=~/opt/bin:$PATHsetzt PATHauf die Zeichenkette ~/opt/bin/:mit dem Wert , gefolgt von PATHauf den ersten Platz.
PATH=~/opt/bin:$PATH(eine bloße Aufgabe) erfordert keine Anführungszeichen und tut das Richtige. Wenn Sie exportin einem portablen Skript verwenden möchten , müssen Sie schreiben export PATH="$HOME/opt/bin:$PATH"oder PATH=~/opt/bin:$PATH; export PATH(oder PATH=$HOME/opt/bin:$PATH; export PATHaus Gründen der Portabilität auch auf die Bourne-Shell, die keine export var=valueTilde-Erweiterung akzeptiert hat).
¹ Bei Bourne-Shells stimmte dies nicht (wie bei der eigentlichen Bourne-Shell, nicht bei modernen POSIX-Shells), aber es ist sehr unwahrscheinlich, dass Sie heutzutage auf solche alten Shells stoßen.