При установке переменных в моем ~/.zshrc
я могу использовать export
export PATH=/some/path
или нет
PATH=/some/path
Чем они отличаются и какие мне следует использовать?
Если вы хотите, чтобы программы запускались из zsh для просмотра var, экспортируйте его.
Для пути, вы, вероятно, хотите экспортировать.
Вместо export PATH=/some/path
вы, вероятно, захотите export PATH="$PATH:/some/path"
, если только вы не собираетесь полностью очистить заданный путь системы.
Демуре уже ответил на ваш конкретный вопрос. Однако это zsh
вопрос и о PATH
. Итак, еще один момент: кроме стандартной переменной $PATH
, есть также $path
, который является массивом. Здесь вы видите разницу (двоеточия или нет ...):
$ print $PATH
/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
$print $path
/bin /usr/bin /usr/local/bin /usr/X11R6/bin
Оба варианта автоматически синхронизируются. Итак, в чем преимущество использования массива?
typeset -U path
чтобы "сохранить только первое вхождение каждого дублированного значения" (из man zshbuiltins
). Это означает, что это сохраняет ваш путь в чистоте, даже если вы последовательно поставляете исходный код ~/.zshrc
(потому что вы изменили его или что-то еще) и не загромождаете его одними и теми же значениями снова и снова.path+=(/new/path)
чтобы добавить новый каталог в вашу PATH. Чтобы удалить элемент, вы должны использовать некоторые приемы, см., Например, https://stackoverflow.com/q/3435355/2037712 или http://www.zsh.org/mla/users//2005/msg01132.html.for i ($path) { print $i # or do something else }
Наконец, вот выдержка из моего конфига:
typeset -U path
path=(/new/path1
/new/path2
$path)
export PATH