Я видел следующий фрагмент в этой теме: Как перейти с csh на bash в качестве оболочки по умолчанию
sleep 2
if (-x /usr/local/bin/bash) then
exec /bin/sh -c '. ~/.profile; exec /usr/local/bin/bash'
endif
Насколько я понимаю, если вы разместите этот фрагмент, ~/.login
он будет вызываться bash
при входе в систему.
У меня похожая ситуация, когда я хотел бы использовать похожий фрагмент кода для вызова версии zsh
, отличной от версии по умолчанию, с которой я вхожу в систему. Отчасти причина, по которой я сталкиваюсь с этой проблемой, заключается в том, что я не могу выбрать Моя желаемая версия zsh
в опциях разрешена chsh
, и у меня нет прав администратора.
С этим:
- Как мне изменить приведенный выше фрагмент кода, чтобы сделать это при переключении между различными версиями zsh?
- Почему
exec
в приведенном выше фрагменте нужны две команды? Что они делают? Кроме того, почему фрагмент выше используетsh
иbash
(пользователь должен войти в систему сcsh
)
.zprofile
:if [[ $ZSH_VERSION != 4.3.14 ]]; then exec /n/sw/zsh-4.3.14/bin/zsh --login fi
и это, кажется, работает!