Proste rzeczy
PATH=$PATH:~/opt/bin
lub
PATH=~/opt/bin:$PATH
w zależności od tego, czy chcesz dodać ~/opt/bin
na końcu (do przeszukania po wszystkich innych katalogach, w przypadku gdy program ma taką samą nazwę w wielu katalogach), czy na początku (do przeszukania przed wszystkimi innymi katalogami).
Możesz dodać wiele wpisów jednocześnie. PATH=$PATH:~/opt/bin:~/opt/node/bin
lub zmiany w zamówieniu działają dobrze. Nie umieszczaj export
na początku linii, ponieważ ma ona dodatkowe komplikacje (patrz poniżej w „Notatkach o powłokach innych niż bash”).
Jeśli twoja PATH
kompilacja składa się z wielu różnych komponentów, możesz mieć zduplikowane wpisy. Zobacz Jak dodać ścieżkę katalogu domowego, która ma zostać wykryta przez Unix, które polecenie? i Usuń zduplikowane wpisy $ PATH za pomocą polecenia awk, aby uniknąć dodawania lub usuwania duplikatów.
Nawiasem mówiąc, niektóre dystrybucje automatycznie umieszczają ~/bin
W ŚCIEŻKĘ, jeśli istnieje.
Gdzie to położyć
Umieścić linię zmodyfikować PATH
w ~/.profile
, lub ~/.bash_profile
jeśli to, co masz.
Zauważ, że ~/.bash_rc
nie jest odczytywany przez żaden program i ~/.bashrc
jest plikiem konfiguracyjnym interaktywnych instancji bash. Nie powinieneś definiować zmiennych środowiskowych w ~/.bashrc
. Właściwym miejscem do zdefiniowania zmiennych środowiskowych, takich jak PATH
is ~/.profile
(lub ~/.bash_profile
jeśli nie obchodzą Cię powłoki inne niż bash). Zobacz, jaka jest różnica między nimi a tym, którego powinienem użyć?
Nie wkładaj go /etc/environment
lub ~/.pam_environment
: nie są to pliki powłoki, nie możesz używać podstawień jak $PATH
tam. W tych plikach można jedynie zastąpić zmienną, a nie dodawać do niej.
Potencjalne komplikacje w niektórych skryptach systemowych
Nie potrzebujesz, export
jeśli zmienna jest już w środowisku: każda zmiana wartości zmiennej jest odzwierciedlana w środowisku PATH
.¹ jest prawie zawsze w środowisku; wszystkie systemy uniksowe ustawiają go bardzo wcześnie (zazwyczaj w pierwszym procesie).
Podczas logowania możesz polegać na PATH
tym , że jesteś już w środowisku i zawiera już niektóre katalogi systemowe. Jeśli piszesz skrypt, który może zostać wykonany wcześnie podczas konfigurowania jakiegoś środowiska wirtualnego, może być konieczne upewnienie się, że PATH
nie jest pusty i wyeksportowany: jeśli PATH
nadal nie jest ustawiony, to coś podobnego PATH=$PATH:/some/directory
ustawi się PATH
na :/some/directory
, a pusty komponent na początku oznacza bieżący katalog (jak .:/some/directory
).
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi
Uwagi na temat muszli innych niż bash
W bash, ksh i zsh, export
jest specjalna składnia, i oba, PATH=~/opt/bin:$PATH
i export PATH=~/opt/bin:$PATH
czynią to, co należy. W innych powłokach w stylu Bourne / POSIX, takich jak dash ( /bin/sh
w wielu systemach), export
jest analizowany jako zwykłe polecenie, co implikuje dwie różnice:
Tak więc w powłokach, takich jak myślnik, export PATH=~/opt/bin:$PATH
ustawia PATH
się na literał ciąg, ~/opt/bin/:
po którym następuje wartość PATH
do pierwszej spacji.
PATH=~/opt/bin:$PATH
(nagie zadanie) nie wymaga cytatów i robi właściwą rzecz. Jeśli chcesz używać export
w przenośnym skrypcie, musisz napisać export PATH="$HOME/opt/bin:$PATH"
, lub PATH=~/opt/bin:$PATH; export PATH
(lub PATH=$HOME/opt/bin:$PATH; export PATH
dla przenośności nawet powłoki Bourne'a, która nie zaakceptowała export var=value
i nie zrobiła rozszerzenia tyldy).
¹ Nie było to prawdą w przypadku powłok Bourne'a (tak jak w przypadku rzeczywistej powłoki Bourne'a, a nie nowoczesnych powłok w stylu POSIX), ale w dzisiejszych czasach jest bardzo mało prawdopodobne, aby spotkać takie stare powłoki.