Proste rzeczy
PATH=$PATH:~/opt/bin
lub
PATH=~/opt/bin:$PATH
w zależności od tego, czy chcesz dodać ~/opt/binna 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/binlub zmiany w zamówieniu działają dobrze. Nie umieszczaj exportna początku linii, ponieważ ma ona dodatkowe komplikacje (patrz poniżej w „Notatkach o powłokach innych niż bash”).
Jeśli twoja PATHkompilacja 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ą ~/binW ŚCIEŻKĘ, jeśli istnieje.
Gdzie to położyć
Umieścić linię zmodyfikować PATHw ~/.profile, lub ~/.bash_profilejeśli to, co masz.
Zauważ, że ~/.bash_rcnie jest odczytywany przez żaden program i ~/.bashrcjest plikiem konfiguracyjnym interaktywnych instancji bash. Nie powinieneś definiować zmiennych środowiskowych w ~/.bashrc. Właściwym miejscem do zdefiniowania zmiennych środowiskowych, takich jak PATHis ~/.profile(lub ~/.bash_profilejeś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/environmentlub ~/.pam_environment: nie są to pliki powłoki, nie możesz używać podstawień jak $PATHtam. W tych plikach można jedynie zastąpić zmienną, a nie dodawać do niej.
Potencjalne komplikacje w niektórych skryptach systemowych
Nie potrzebujesz, exportjeś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 PATHtym , ż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 PATHnie jest pusty i wyeksportowany: jeśli PATHnadal nie jest ustawiony, to coś podobnego PATH=$PATH:/some/directoryustawi się PATHna :/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, exportjest specjalna składnia, i oba, PATH=~/opt/bin:$PATHi export PATH=~/opt/bin:$PATHczynią to, co należy. W innych powłokach w stylu Bourne / POSIX, takich jak dash ( /bin/shw wielu systemach), exportjest analizowany jako zwykłe polecenie, co implikuje dwie różnice:
Tak więc w powłokach, takich jak myślnik, export PATH=~/opt/bin:$PATHustawia PATHsię na literał ciąg, ~/opt/bin/:po którym następuje wartość PATHdo pierwszej spacji.
PATH=~/opt/bin:$PATH(nagie zadanie) nie wymaga cytatów i robi właściwą rzecz. Jeśli chcesz używać exportw 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 PATHdla przenośności nawet powłoki Bourne'a, która nie zaakceptowała export var=valuei 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.