Правильный ответ должен был решить вашу проблему:
chsh: / usr / bin / zsh: нестандартная оболочка
Причина, по которой это так, заключается в том, что chsh
будут приниматься только оболочки, определенные в файле / etc / shells, как вы можете видеть, прочитав руководство для chsh
:
chsh примет полный путь к любому исполняемому файлу в системе. Однако он выдаст предупреждение, если оболочка не указана в файле / etc / shells.
Чтобы решить эту проблему и сделать zsh оболочкой по умолчанию, вам следует:
$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)
Очевидно, я предполагаю, что zsh
это на вашем пути. Это решение также будет работать, если вы, например, решите установить последнюю версию zsh
с brew install zsh
.
EDIT (спасибо ThisIsFlorianK за комментарий) :
В зависимости от настроек вашей оболочки вы можете получить сообщение /etc/shells: Permission denied
. Вы можете найти информацию об этой проблеме здесь.
Чтобы обойти это, используйте вместо этого следующее:
$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
chsh -l
выводит? (Если это не сработает, каково содержимое/etc/shells
?) Вы уверены, что это не так, а не просто предупреждение? Добавляет ли/usr/bin/zsh
туда эту работу?