Що не повинно входити в .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?


130

Я шукаю вказівки щодо того, що потрібно, а що не слід включати в різні файли запуску для zsh.

Я розумію порядок пошуку цих файлів та умови, за яких вони отримуються, але мені все одно не зрозуміло, що має відбуватися в кожному.


Відповіді:


155

Ось неексклюзивний список того, що має містити кожен файл:

  • Оскільки .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 отримується після man zshall.
Аарон

8
Майте в виду , при установці $PATHв .zshenvрізні інші файли , все будуть отримані після цього файлу , який буде перевизначити це значення. Див. Zsh.org/mla/users/2003/msg00600.html .
Beau Barker

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

23
Просто для мого власного примітки / підтвердження і допомогти кому - небудь ще, остаточне замовлення .zshenv→ [ .zprofileякщо Ввійти] → [ .zshrcякщо інтерактивний] → [ .zloginякщо Ввійти] → [ .zlogoutіноді].
Габріель Л.

23

Ось список того, що кожен файл повинен / не повинен містити, на мою думку:

.зшенв

[Читати кожен раз]

Він завжди розміщений, тому він повинен встановлювати змінні середовища, які потрібно часто оновлювати . PATH (або пов'язаний з ним аналогічний шлях ) є хорошим прикладом, оскільки ви, ймовірно, не хочете перезавантажувати весь сеанс, щоб оновити його. Встановивши його у цьому файлі, повторне відкриття емулятора терміналу запустить новий екземпляр Zsh із оновленим значенням PATH .

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

.zprofile

[Читати при вході]

Я особисто ставлюся до цього файлу, як .zshenvдо команд та змінних, які слід встановити один раз або які не потрібно часто оновлювати :

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

Якщо ви модифікуєте цей файл, ви можете отримати оновлення конфігурації, замінивши поточну оболонку новою як оболонку входу:

exec zsh --login

.zshrc

[Читати, коли інтерактивний]

Я розміщую тут все необхідне лише для інтерактивного використання :

  • підказка,
  • виконання команди,
  • корекція команд,
  • пропозиція команди,
  • виділення команди,
  • забарвлення на виході,
  • псевдоніми,
  • ключові прив’язки,
  • команд управління історією,
  • інші різні інтерактивні інструменти (auto_cd, manydots-magic) ...

.zlogin

[Читати при вході]

Цей файл подобається .zshprofile, але читається після .zshrc. Я вважаю, що оболонка в цей час повністю налаштована.

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

.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.