Переменные среды, которые также используются неинтерактивными оболочками (скажем, сценарий оболочки, который вы написали), должны входить в .zshenv,
Francisco
Является ~/.zshenv также получены из логинов? Должен PATH определиться там?
jordelver
1
PATH это, вероятно, лучший пример переменной, которая должна быть определена внутри ~/.zshenvэтот файл получен любой сеанс Zsh (если вы не используете какую-либо опцию, чтобы отключить это). Увидеть man zsh для просмотра, какие файлы получены и в каком порядке.
Francisco
Хорошо, спасибо @Francisco. Я прочитаю страницу руководства.
jordelver
Ответы:
20
Если вы хотите, чтобы программы запускались из zsh для просмотра var, экспортируйте его. Для пути, вы, вероятно, хотите экспортировать. Вместо export PATH=/some/path ты наверное хочешь export PATH="$PATH:/some/path", если только вы не собираетесь полностью очистить путь предустановки системы.
Это здорово, спасибо. Тогда я буду использовать экспорт как общее правило.
jordelver
19
Демуре уже ответил на ваш конкретный вопрос. Однако это zsh вопрос и о PATH, Итак, вот еще один момент: помимо стандартной переменной $PATH, существует также $path, который является массивом. Здесь вы видите разницу (двоеточия или нет ...):
Оба варианта автоматически синхронизируются. Итак, в чем преимущество использования массива?
Последний вы можете объявить через typeset -U path «сохранить только первое вхождение каждого дублированного значения» (из man zshbuiltins ). Это означает, что ваш путь остается чистым, даже если вы успешно ~/.zshrc (потому что вы изменили его или что-то еще) и не загромождайте его одними и теми же значениями снова и снова.
Спасибо, это был на самом деле дополнительный вопрос. Я буду смотреть на управление моим путем, используя path скорее, чем PATH,
jordelver
1
Рад слышать, так как я уже боялся, что я ОТ. Btw. Еще одно преимущество, которое я забыл: вы можете легко зациклить элементы с for i ($path) { print $i # or do something else },
.zshenv
,~/.zshenv
также получены из логинов? ДолженPATH
определиться там?PATH
это, вероятно, лучший пример переменной, которая должна быть определена внутри~/.zshenv
этот файл получен любой сеанс Zsh (если вы не используете какую-либо опцию, чтобы отключить это). Увидетьman zsh
для просмотра, какие файлы получены и в каком порядке.Ответы:
Если вы хотите, чтобы программы запускались из zsh для просмотра var, экспортируйте его.
Для пути, вы, вероятно, хотите экспортировать.
Вместо
export PATH=/some/path
ты наверное хочешьexport PATH="$PATH:/some/path"
, если только вы не собираетесь полностью очистить путь предустановки системы.источник
Демуре уже ответил на ваш конкретный вопрос. Однако это
zsh
вопрос и оPATH
, Итак, вот еще один момент: помимо стандартной переменной$PATH
, существует также$path
, который является массивом. Здесь вы видите разницу (двоеточия или нет ...):Оба варианта автоматически синхронизируются. Итак, в чем преимущество использования массива?
typeset -U path
«сохранить только первое вхождение каждого дублированного значения» (изman zshbuiltins
). Это означает, что ваш путь остается чистым, даже если вы успешно~/.zshrc
(потому что вы изменили его или что-то еще) и не загромождайте его одними и теми же значениями снова и снова.path+=(/new/path)
добавить новый каталог в ваш путь. Чтобы удалить элемент, вы должны использовать некоторые приемы, см., Например, https://stackoverflow.com/q/3435355/2037712 или же http://www.zsh.org/mla/users//2005/msg01132.htmlfor i ($path) { print $i # or do something else }
Наконец, вот выдержка из моего конфига:
источник
path
скорее, чемPATH
,for i ($path) { print $i # or do something else }
,