Das einfache Zeug
PATH=$PATH:~/opt/bin
oder
PATH=~/opt/bin:$PATH
Je nachdem, ob Sie ~/opt/bin
am 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/bin
oder abweichungen von der bestellung funktionieren einwandfrei. Nicht export
am Anfang der Zeile einfügen, da dies zusätzliche Komplikationen mit sich bringt (siehe unten unter „Hinweise zu anderen Muscheln als Bash“).
Wenn Ihr PATH
System 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 ~/bin
Ihren PATH übrigens automatisch hinzu, falls vorhanden.
Wo soll ich es hinstellen?
Setzen Sie die zu ändernde Zeile PATH
ein ~/.profile
, oder setzen Sie sie ein, ~/.bash_profile
wenn Sie dies möchten.
Beachten Sie, dass ~/.bash_rc
dies von keinem Programm gelesen wird und dass ~/.bashrc
es sich um die Konfigurationsdatei interaktiver Instanzen von bash handelt. Sie sollten keine Umgebungsvariablen in definieren ~/.bashrc
. Der richtige Ort zum Definieren von Umgebungsvariablen wie PATH
ist ~/.profile
(oder ~/.bash_profile
wenn 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/environment
oder ~/.pam_environment
: Dies sind keine Shell-Dateien, Sie können keine Ersetzungen wie $PATH
dort 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, export
wenn sich die Variable bereits in der Umgebung befindet. Jede Änderung des Werts der Variablen PATH
wirkt 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 PATH
bereits 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 PATH
es nicht leer und exportiert ist: Wenn PATH
es immer noch nicht gesetzt ist, wird etwas wie auf und die leere Komponente gesetzt am anfang steht das aktuelle verzeichnis (like ).PATH=$PATH:/some/directory
PATH
:/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, export
ist eine spezielle Syntax, und beide PATH=~/opt/bin:$PATH
und export PATH=~/opt/bin:$PATH
das Richtige zu tun , auch. In anderen Bourne / POSIX-Shells wie dash ( /bin/sh
auf vielen Systemen) wird export
es als gewöhnlicher Befehl analysiert, der zwei Unterschiede impliziert:
So in Shells wie Bindestrich, export PATH=~/opt/bin:$PATH
setzt PATH
auf die Zeichenkette ~/opt/bin/:
mit dem Wert , gefolgt von PATH
auf den ersten Platz.
PATH=~/opt/bin:$PATH
(eine bloße Aufgabe) erfordert keine Anführungszeichen und tut das Richtige. Wenn Sie export
in 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 PATH
aus Gründen der Portabilität auch auf die Bourne-Shell, die keine export var=value
Tilde-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.