O comando chsh
permite que você altere seu shell de login de um shell listado em /etc/shells
, para um shell listado em /etc/shells
. Esse é um recurso de segurança: se uma conta tiver um shell restrito (não listado em /etc/shells
), eles não poderão atualizar seu acesso alternando para outro shell; e um usuário não pode se bloquear trocando para um shell do qual não pode mudar. O usuário root está naturalmente isento dessa restrição.
A verificação de /etc/shells
não considera formas alternativas de nomear um arquivo, como links simbólicos. Se /etc/shells
listar /bin/bash
, a entrada no banco de dados do usuário deverá ser /bin/bash
, não /bin/./bash
(que é o mesmo arquivo) ou /usr/bin/bash
(mesmo que seja um link simbólico para /bin/bash
).
Se você estiver se afastando de um shell, precisará executar chsh
para voltar antes de desinstalar o shell antigo, porque a desinstalação removerá o shell de /etc/shells
.
Eu recomendo mudar seu shell de volta para /bin/bash
; você precisará fazer isso como root. Dessa forma, você poderá executar chsh
novamente no futuro.
No Linux, para uma conta local, a entrada em /etc/passwd
é o que determina o shell de login do usuário. (Isso não é verdade para algumas outras variantes do Unix, em que /etc/passwd
está presente para compatibilidade, mas não é a referência real, portanto, /etc/passwd
não deve ser modificado ou algum comando de sincronização deve ser chamado após modificá-lo.)
Eu não posso explicar onde a referência a /bin/zsh
é persistente. Certifique-se de que não haja uma entrada extra perdida em /etc/passwd
.