Если вы не можете запустить, chshпотому что у вас нет прав администратора, поговорите с кем-то, кто имеет .
Скорее всего, вы не можете использовать его без chshполномочий root, потому что система, которую вы используете, настроена так, что chshона не будет работать, например, потому что система использует NIS или LDAP, а не только /etc/passwdфайл. Или, возможно, администратор вашей системы просто хочет сохранить некоторый контроль.
Процедура изменения вашей оболочки зависит от политики вашей организации. Может быть локальная команда, которая делает то, что chshобычно делает. Или вам может потребоваться отправить запрос в службу поддержки с просьбой изменить оболочку.
Большинство других ответов хороши, но если ваши администраторы достаточно отзывчивы, вы, возможно, не захотите взламывать сценарии запуска. Я, вероятно, просто вызову zsh -lвручную после входа в систему, пока администратор не сможет обновить мою учетную запись.
Следует помнить еще одну вещь: иногда разные оболочки могут использовать одни и те же файлы запуска. Например, shи bashможет одновременно выполнять $HOME/.profile, и cshи tcshможет одновременно выполнять $HOME/.loginи $HOME/.cshrc(хотя оболочки конкретные файлы запуска нравится .bashrc, .bash_profileи .tcshrcмогут переопределять). Если ваша оболочка по умолчанию установлена /bin/cshи вы хотите ее использовать /bin/tcsh, обновление .loginдля вызова /bin/tcsh -lможет создать бесконечный цикл. zshслучайно не bashзапускаются специфичные файлы запуска, так что это не проблема для вас.
Большинство снарядов установить переменные , которые определяют , какую оболочку вы используете ( $BASH_VERSION, $tcsh, $ZSH_VERSION). Если вы собираетесь написать код запуска, чтобы вызвать предпочитаемую оболочку, неплохо было бы заключить его в оболочку, ifчтобы он выполнялся только в том случае, если эта оболочка еще не запущена. Используя код из ответа konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(Добавленная сложность проверки, "${ZSH_VERSION:-unset}"а не просто "$ZSH_VERSION"возможность, которую вы сделали set -o unset, опция, которая приводит к ошибке ссылки на неопределенную переменную.)
zshв.bashrcфайл. Выйдите из системы и войдите и все готово!