Если вы не можете запустить, 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
файл. Выйдите из системы и войдите и все готово!