Я использую zsh, и я пытаюсь добавить новую запись (/home/david/pear/bin
) в переменную PATH
, но я не знаю, как это сделать.
То, что меня смущает больше всего, это то, что нет ни одного
ссылку на переменную PATH
в моем файле ~/.zshrc
, но выполнение echo $PATH
возвращает:
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Так что переменная PATH
устанавливается где-то.
Здесь:
export PATH=/home/david/pear/bin:$PATH
Собственно, использование ZSH позволяет использовать специальное сопоставление переменных среды. Поэтому вы можете просто:
# 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
Для меня это очень аккуратная функция, которая может быть распространена на другие переменные. Пример:
typeset -T LD_LIBRARY_PATH ld_library_path :
~/.zshrc
происходит после .profile
и перезаписывает все в .profile
. Потребовалось время, чтобы вырвать мои волосы, чтобы понять это.
Вы можете добавить к своему PATH
минимально. Нет необходимости в
круглые скобки, если вы не добавляете более одного элемента. Это также
обычно не нужны кавычки. Итак, простой, короткий способ добавления:
path+=/some/new/bin/dir
Тогда общий шаблон для тестирования нового script/исполняемого файла будет выглядеть следующим образом:
path+=$PWD/.
# or
path+=$PWD/bin
Этот строчный синтаксис использует PATH
как массив , но также
влияет на его эквивалент партнера в верхнем случае, PATH
(которому он
"bound" через typeset
).
(Обратите внимание, что нет :
требуется/требуется как разделитель.)
Рассмотрение PATH
таким образом (как массив) также означает: не нужно делать
rehash
, чтобы получить новые исправленные команды.
Также рассмотрите vared path
как динамический способ редактирования PATH
и другие вещи.
Вас может интересовать только PATH
для этого вопроса, но поскольку
мы говорим об экспорте и массивах, отметим, что
массивы обычно не могут быть экспортированы.
Вы можете даже предотвратить PATH
от дублирования записей
(Ссылаться на
this
и this):
typeset -U path
один вкладыш, без открытия ~/.zshrc
файла
echo -n 'export PATH=~/bin:$PATH' >> ~/.zshrc
или
echo -n 'export PATH=$HOME/bin:$PATH' >> ~/.zshrc
Чтобы увидеть эффект, сделайте source ~/.zshrc
на той же вкладке или откройте новую вкладку