Dodanie nowego wpisu do zmiennej PATH w ZSH

Używam zsh i próbuję dodać nowy wpis (/home/david/pear/bin) do zmiennej PATH ale nie wiem jak.

Najbardziej mnie myli to, że nie ma ani jednego odniesienie do zmiennej PATH w moim pliku ~/.zshrc, ale wykonanie echo $PATH zwraca:

/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Więc PATH zmienna jest ustawiana gdzieś.

Author: Micah Elliott, 2012-07-18

5 answers

Tutaj:

export PATH=/home/david/pear/bin:$PATH
 99
Author: Linuxios,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-17 20:15:05

W rzeczywistości korzystanie z ZSH pozwala na użycie specjalnego mapowania zmiennych środowiskowych. Więc można po prostu zrobić:

# append
path+=('/home/david/pear/bin')
# or prepend
path=('/home/david/pear/bin' $path)
# export to sub-processes (make it inherited by child processes)
export PATH

Dla mnie jest to bardzo zgrabna funkcja, która może być propagowana do innych zmiennych. Przykład:

typeset -T LD_LIBRARY_PATH ld_library_path :
 89
Author: ony,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-04 03:34:17

Możesz dołączyć do swojego PATH w minimalnym stylu. Nie ma potrzeby nawiasy, chyba że dodajesz więcej niż jeden element. To także zazwyczaj nie potrzebuje cytatów. Więc prosty, krótki sposób na dodanie to:

path+=/some/new/bin/dir

Powszechne użycie

Wtedy wspólny wzorzec do testowania nowego skryptu / pliku wykonywalnego staje się:

path+=$PWD/.
# or
path+=$PWD/bin

Ta mała składnia używa path jako tablicy , jednak również wpływa na jego odpowiednik dla partnera górnego, PATH (do którego na "bound" via typeset).

(zauważ, że no : jest potrzebny / poszukiwany jako separator.)

Podobne ciekawostki

Traktowanie path w ten sposób (jako tablica) oznacza również: nie trzeba robić rehash aby znaleźć nowo dodane polecenia.

Zobacz też vared path jako dynamiczny sposób edycji path i inne rzeczy.

Możesz być zainteresowany tylko path na to pytanie, ale od mówimy o eksporcie i tablice, zauważ, że tablic zazwyczaj nie można eksportować.

Możesz nawet zapobiec PATH przyjmowaniu zduplikowanych wpisów (patrz to i to):

typeset -U path
 12
Author: Micah Elliott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-13 17:57:45

Jedna wkładka, bez otwierania ~/.zshrc pliku

echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc

Lub

echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc

Aby zobaczyć efekt, wykonaj source ~/.zshrc w tej samej karcie lub otwórz nową kartę

 7
Author: Siva Praveen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-13 14:26:38

Opcja 1: Dodaj tę linię do~/.ZSRC:

export "PATH=$HOME/pear/bin:$PATH"

Następnie należy uruchomić source ~/.zshrc, aby zmiany wpłynęły lub zamknęły to okno i otworzyły nowe

Opcja 2: wykonaj ją wewnątrz konsoli terminala, aby dodać tę ścieżkę tylko do bieżącej sesji okna terminala. Po zamknięciu okna / sesji zostanie ono utracone.

 2
Author: Dimitar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 08:53:01