20

При установке переменных в моем ~/.zshrc я могу использовать export

export PATH=/some/path

или нет

PATH=/some/path

Чем они отличаются и какие мне следует использовать?

2 ответа2

20

Если вы хотите, чтобы программы запускались из zsh для просмотра var, экспортируйте его.
Для пути, вы, вероятно, хотите экспортировать.
Вместо export PATH=/some/path вы, вероятно, захотите export PATH="$PATH:/some/path" , если только вы не собираетесь полностью очистить заданный путь системы.

19

Демуре уже ответил на ваш конкретный вопрос. Однако это 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.
  • Вы можете легко перебрать элементы в PATH с помощью for i ($path) { print $i # or do something else }

Наконец, вот выдержка из моего конфига:

typeset -U path
path=(/new/path1
      /new/path2
      $path)
export PATH

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .