A resposta correta deveria ter resolvido seu problema:
chsh: / usr / bin / zsh: shell não padrão
Este é o caso porque chsh
só aceitará shells que são definidos no arquivo / etc / shells, como você pode ver lendo o manual para chsh
:
chsh aceitará o nome de caminho completo de qualquer arquivo executável no sistema. No entanto, ele emitirá um aviso se o shell não estiver listado no arquivo / etc / shells.
Para resolver esse problema e tornar o zsh o shell padrão, você deve:
$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)
Obviamente, suponho que zsh
esteja em seu caminho aqui. Essa solução também funcionará se você, por exemplo, optar por instalar a última zsh
com brew install zsh
.
EDIT (obrigado por ThisIsFlorianK pelo comentário) :
Dependendo da configuração do seu shell, você pode receber uma mensagem dizendo /etc/shells: Permission denied
. Você pode encontrar informações sobre este assunto aqui.
Para contornar isso, use o seguinte:
$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
chsh -l
? (Se isso não funcionar, qual é o conteúdo de/etc/shells
?) Tem certeza de que está falhando e não apenas um aviso? Adicionar/usr/bin/zsh
lá faz com que funcione?