Я только что обновился до 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
. Другие файлы запуска вам понадобятся редко.