
Могу ли я установить zsh в качестве оболочки по умолчанию, будучи авторизованным как root? Я сделал это chsh -s /bin/zsh
и использовал свой пароль root для аутентификации, но не получилось.
решение1
Хитрость заключается в том, чтобы настроить интерактивные оболочки root на использование zsh и оставить неинтерактивные оболочки на использование /bin/sh.
Это все еще может привести к проблемам «ожиданий», описанным в других ответах, но, по крайней мере, вы не разрушите ни один неинтерактивный процесс.
Добавьте следующее в конец /root/.bashrc
if [ ! -z "$PS1" ]; then
exec /bin/zsh $*
fi
решение2
В общем, плохая идея менять оболочку root с /bin/sh. Лучше добавить другую учетную запись, например zroot, которая все еще имеет UID 0, но имеет zsh в качестве оболочки. Однако, чтобы попытаться ответить на вопрос, если вы входите в систему как root, то вам не нужно использовать sudo
. Просто используйте
chsh -s /bin/zsh root
и дать root
пароль в ответ на запрос от chsh. Стоит указать 'root' явно.
Если вы входите в систему как «fred», то используйте
sudo -i
и ответьте на запрос пароля fred's
паролем. Это должно дать вам root shell. Продолжайте так, как будто вы изначально вошли как root.
Убедитесь, что /bin/zsh указан в /etc/shells.
решение3
Вы, вероятно, забыли выполнить it has root. Выполните следующую команду:
$ sudo chsh -s /bin/zsh
решение4
Редактирование файла passwd обычным редактором не рекомендуется для этой цели.
vipw
и смените оболочку на zsh, честно говоря, я не понимаю, зачем вам менять оболочку root, учетная запись root должна использоваться только для администрирования, для обычной работы используйте непривилегированного пользователя. После этого попробуйте войти в систему на другом tty без (важно) отключения от текущего tty, если работает, вы увидите свою новую оболочку. Если вы хотите использовать zsh немедленно, просто введите zsh. Заключение
I want to use my new shell now = type zsh
I want to use my new shell + change = chsh -s or vipw
ps= если ваш zsh не установлен по этим путям (/bin /sbin..) и вам нужно войти в систему как один пользователь с правами root, это не сработает, так как не сможет найти вашу оболочку, это может произойти также в системе, где /usr отделен от root/смонтирован на другом lvm или разделе