Чтобы проверить разницу между zsh --login -c "alias"
и обычной оболочкой входа, вы можете/должны добавить опцию -x
, чтобы увидеть, что такое оболочка.
Когда я запустил zsh -x --login -c "alias"
, он обрабатывает /etc/zprofile
.
Когда я запустил zsh -x --login
, он обрабатывает /etc/zprofile
и /etc/zshrc
.
Я обычно не использую zsh
, поэтому у меня нет какого-либо персонализированного профиля или запустить файл для него, но, кажется вероятным, что он может найти (но, в моем случае, не найти) ~/.zprofile
и ~/.zshrc
слишком.
Я создал тривиальные версии этих файлов:
$ echo "echo in .zprofile" > ~/.zprofile
$ echo "echo in .zshrc" > ~/.zshrc
и конечно, они обрабатываются. Кроме того, команда -c
с --login
обработала .zprofile
, но не обработала файл .zshrc
.
Таким образом, используя -c "alias"
после --login
, подавляет обработку /etc/zshrc
и ~/.zshrc
. Если вы хотите, казненных даже так, что вам нужно использовать что-то вроде:
zsh --login -c "[ -f /etc/zshrc ] && . /etc/zshrc; [ -f ~/.zshrc ] && . ~/.zshrc; alias"
Использование -x
для обработки отладки входа часто информативными.
Приятно, что современные оболочки предоставляют возможность командной строки, чтобы вызвать обработку входа в систему. У меня все еще есть программа (которую я больше не использую), которая запускает оболочку входа старомодным способом, добавляя -
до имени оболочки в argv[0]
. Таким образом, запуск -ksh
приведет к обработке входа в систему; программа login
запускает оболочку входа с -
в начале.
Завершите ли ваши файлы входа раньше (перед установкой псевдонимов), если оболочка не является интерактивной. Он может работать, но вы не устанавливаете псевдонимы, поэтому вы не можете их использовать. Попробуйте добавить '-x' в командную строку (до' -c'). –
Пробовал '-x', тот же результат –
Хорошо; он самосогласован. Вы видели, как ваши псевдонимы установлены? Был ли '/ etc/zprofile' прочитан? Был ли прочитан какой-либо другой подобный файл? –