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 .