Разъяснение по поводу файлов запуска/завершения работы ZSH

Разъяснение по поводу файлов запуска/завершения работы ZSH

Я только что обновился до macOS Catalina, и новая оболочка — ZSH. Так что, поскольку это новый старт, я пытаюсь настроить среду оболочки с псевдонимами, функциями и т. д., как в bash. Я пытаюсь понять, что куда идет, когда я наткнулся на это вдокументация

Затем команды считываются из $ZDOTDIR/.zshenv. Если оболочка является оболочкой входа, команды считываются из /etc/zprofileи затем $ZDOTDIR/.zprofile. Затем, если оболочка интерактивная, команды считываются из /etc/zshrcи затем $ZDOTDIR/.zshrc. Наконец, если оболочка является оболочкой входа, считываются /etc/zloginи .$ZDOTDIR/.zlogin

Запутанные моменты...

  • Если это оболочка входа, она считывает данные /etc/zprofileи затем$ZDOTDIR/.zprofile
  • Наконец, если оболочка является оболочкой входа, /etc/zloginи $ZDOTDIR/.zloginсчитываются.

Если я подключаюсь к своему Mac через SSH, это оболочка входа. Так что, поскольку мне нужно настроить это, какие файлы мне нужно (или следует) изменить? Думаю, чтобы ответить на этот вопрос, вероятно, было бы полезно понять разницу между .zprofileи .zloginПоэтому любые указания здесь были бы замечательными.

решение1

Файлы *profileи *loginфайлы считываются при тех же условиях: если и только если оболочка является оболочкой входа (и не вызывается с помощью такой опции, как no_rcs). В руководстве они перечислены отдельно, поскольку они вызываются в другом порядке относительно файлов *rc.

Название *profileпроисходит от sh,оболочка Борна(ksh, bash, dash и другие в основном являются повторными реализациями с дополнительными функциями). Название *loginпроисходит отcsh. Zsh больше похож на sh, но имеет возможности обоих, поэтому, я думаю, он поддерживает оба имени.

Часто не имеет значения, используете ли вы *profileили *login. Но *profileу файлов есть преимущество в том, что они считываются до *rc, поэтому, если у вас есть *rcсодержимое, зависящее от настроек из *profile(например, если вы .zshrcвызываете программу, которая находится в каталоге, который .zprofileдобавляется к $PATH), вам нужно использовать *profile, а не *login.

Поэтому поместите конфигурацию времени входа в систему (обычно в основном переменные среды) в ~/.profile, а интерактивную конфигурацию (подсказка, завершение, привязки клавиш, псевдонимы, …) в ~/.zshrc. Другие файлы запуска вам понадобятся редко.

Связанный контент