Что должно / не должно идти в .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?


133

Я ищу рекомендации о том, что следует и не следует включать в различные файлы запуска zsh.

Я понимаю порядок поиска этих файлов и условия их получения, но мне до сих пор не ясно, что должно быть в каждом из них.


Ответы:


156

Вот неисключительный список того, что каждый файл имеет тенденцию содержать:

  • Поскольку .zshenvон всегда получен, он часто содержит экспортированные переменные, которые должны быть доступны другим программам. Так , например, $PATH, $EDITORи $PAGERчасто устанавливаются в .zshenv. Кроме того , вы можете установить $ZDOTDIRв .zshenvуказать альтернативное место для остальной части вашей конфигурации ЗШ.
  • .zshrcдля конфигурации интерактивной оболочки. Вы можете установить параметры для интерактивной оболочки там с setoptи unsetoptкомандами. Вы также можете загрузить модули оболочки, установить параметры истории, изменить приглашение, настроить zle и завершение и так далее. Вы также устанавливаете любые переменные, которые используются только в интерактивной оболочке (например $LS_COLORS).
  • .zloginисходный код запускается при входе в систему. Этот файл часто используется для запуска X с помощью startx. Некоторые системы запускают X при загрузке, поэтому этот файл не всегда очень полезен.
  • .zprofileв основном то же самое, .zloginза исключением того, что он получен непосредственно до того, .zshrcкак получен, а не непосредственно после него. Согласно документации zsh, « .zprofileподразумевается как альтернатива« .zlogin »для фанатов ksh; оба не предназначены для совместного использования, хотя это, безусловно, можно сделать при желании».
  • .zlogout иногда используется для очистки и сброса терминала.

Вы должны просмотреть файлы конфигурации случайных пользователей Github, чтобы лучше понять, что должен содержать каждый файл.


3
Для ясности, .zlogin поставляется после .zshrc (см. man zshallПодробности).
Аарон

8
Имейте в виду, что при установке $PATHв .zshenv, все другие другие файлы поставляются после этого файла, который переопределит это значение. См. Zsh.org/mla/users/2003/msg00600.html .
Бо Баркер

Куда $LANGи $LC_ALLкуда идти?
Ленар Хойт

24
Только для моих собственных заметок / подтверждения и для того, чтобы помочь кому-либо еще, конечный заказ: .zshenv→ [ .zprofileпри входе в систему] → [ .zshrcпри взаимодействии] → [ .zloginпри входе в систему] → [ .zlogoutиногда].
Габриэль Л.

24

Вот список того, что каждый файл должен / не должен содержать, по моему мнению:

.zshenv

[Читать каждый раз]

Этот файл всегда получен, поэтому он должен устанавливать переменные среды, которые необходимо часто обновлять . PATH (или связанный путь к нему ) является хорошим примером, потому что вы, вероятно, не хотите перезапускать весь сеанс, чтобы обновить его. Установив его в этом файле, повторное открытие эмулятора терминала запустит новый экземпляр Zsh с обновленным значением PATH .

Но имейте в виду, что этот файл читается даже при запуске Zsh для запуска одной команды (с параметром -c ), даже с помощью другого инструмента, подобного make. Вы должны быть очень осторожны, чтобы не изменять поведение стандартных команд по умолчанию, потому что это может сломать некоторые инструменты (например, путем установки псевдонимов).

.zprofile

[Читать при входе в систему]

Лично я отношусь к этому файлу как .zshenvк командам и переменным, которые должны быть установлены один раз или которые не требуют частого обновления :

  • переменные среды для настройки инструментов (флаги для компиляции, расположение папки данных и т. д.)
  • Конфигурация, которая выполняет команды (например SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"), так как это может занять некоторое время.

Если вы измените этот файл, вы можете применить обновления конфигурации, запустив оболочку входа в систему:

exec zsh --login

.zshrc

[Читать в интерактивном режиме]

Я положил сюда все необходимое только для интерактивного использования :

  • незамедлительный,
  • завершение команды,
  • командная коррекция,
  • командное предложение,
  • выделение команд,
  • окраска выхода,
  • псевдонимы,
  • привязки клавиш,
  • управление историей команд,
  • другие разные интерактивные инструменты (auto_cd, manydots-magic) ...

.zlogin

[Читать при входе в систему]

Этот файл похож .zprofile, но читается после .zshrc. Вы можете считать, что оболочка полностью настроена во время выполнения .zlogin

Поэтому я использую его для запуска внешних команд, которые не изменяют поведение оболочки (например, менеджер входа в систему).

.zlogout

[Читать при выходе из системы] [В оболочке входа]

Здесь вы можете очистить свой терминал или любой другой ресурс, который был настроен при входе в систему.

Как выбрать место для установки

  • если это необходимо команде, запущенной неинтерактивно :.zshenv
  • если это должно быть обновлено на каждой новой оболочке :.zshenv
  • если он запускает команду, выполнение которой может занять некоторое время :.zprofile
  • если это связано с интерактивным использованием :.zshrc
  • если это команда, запускаемая при полной настройке оболочки :.zlogin
  • если он освобождает ресурс, полученный при входе в систему:.zlogout

0

Не ssh-agentзвоните .zshenv. Это заставило мою lessкоманду больше не отображать текстовые файлы, вероятно, потому что ее параметры были настроены Prezto ( export LESS='-F -g -i -M -R -S -w -X -z-4'in .zprofile).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.