Eu instalei o zsh no meu Mac. e agora quero torná-lo o shell padrão em vez do Bash. Mas parece que estou encontrando o seguinte erro:
$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell
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?/bin/zsh
?Respostas:
3 etapas fáceis:
which zsh
isso lhe dá seu caminho para zshchsh -s /bin/zsh
ou substitua o caminho para o seu zsh se for diferentefonte
/usr/bin/zsh
para/etc/shells
resolver o problema.A resposta correta deveria ter resolvido seu problema:
Este é o caso porque
chsh
só aceitará shells que são definidos no arquivo / etc / shells, como você pode ver lendo o manual parachsh
:Para resolver esse problema e tornar o zsh o shell padrão, você deve:
Obviamente, suponho que
zsh
esteja em seu caminho aqui. Essa solução também funcionará se você, por exemplo, optar por instalar a últimazsh
combrew 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:fonte
/etc/shells: Permission denied
==> Faça isso:sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh
está disponível por padrão por um motivo. Embora não haja nada de intrinsecamente errado em clicar em vários menus para realizar a mesma coisa, isso não só é impossível de ser transportado e está sujeito a erros, mas também é enganoso, pois se esconde dos usuários de onde vem a mudança.Consegui fazer isso funcionar da seguinte maneira:
echo $SHELL
fonte
/usr/local/bin/zsh
. Portanto, você precisará editar/etc/shells
no sudo e adicionar uma entrada para/usr/local/bin/zsh
antes de selecionar o executável zsh que o hombrew instalouNo meu MacBook de trabalho, tive que fazer o seguinte:
Então eu tive que criar um
.bash_profile
arquivo para fazer meu terminal mudar para z-shell toda vez que eu abri-lo:A última ideia foi emprestada daqui .
fonte