Em um sistema normalmente configurado, se você alterou seu shell com chsh
, o shell escolhido é válido, portanto o shell está iniciando, mas há um problema em um de seus arquivos de configuração que faz com que ele saia imediatamente .
Tente pressionar Ctrl + C muito rapidamente depois de registrá-lo. Dependendo de quão carregada é a máquina, a janela de tempo durante a qual isso não matará o shell, mas instruirá a interrupção dos arquivos de configuração pode ou não durar o suficiente para ter uma chance realista de sucesso. Tente algumas vezes, de preferência durante uma atividade pesada no disco, para que os arquivos envolvidos não fiquem no cache de disco.
Se o problema estiver em .zshrc
, você ainda poderá efetuar login de maneira não interativa. Isso é impossível no console, mas pode ser feito pela rede:
ssh machinename 'mv .zshrc bad.zshrc'
Se você tiver acesso FTP (não SFTP), poderá se livrar de qualquer arquivo de configuração dessa maneira, porque o FTP não lê nenhum arquivo de configuração. Com SSH ou SFTP, um shell é sempre chamado, portanto, você não poderá efetuar login se o problema for com .zprofile
ou .zshenv
.
Se você não conseguir acessar sua conta, precisará corrigir isso por meio da conta raiz. Se você tiver uma senha root, faça o login como root no console. Se você só tem acesso à conta root via sudo, você está bloqueado, portanto, supondo que ninguém mais possa fazer isso por você, você precisará ter acesso físico à máquina e precisará reiniciá-la. No prompt de bootloader (você pode precisar pressionar e segurar Shift para que apareça), adicione init=/bin/sh
no final da linha de comando do kernel (a linha que começa com linux
). Consulte o Arch Wiki para obter mais detalhes.
Depois de obter acesso a partir da conta raiz, você pode alterar o shell de volta para um que funcionou ou adivinhar o arquivo que causou o problema. Zsh lê cinco arquivos de configuração em /etc
e 5 no seu diretório pessoal .
Depois de recuperar o acesso à sua conta, se você não souber qual arquivo causou o problema, adicione set -x
a ~/.zshenv
. Isso fará com que o zsh imprima todos os comandos antes de executá-los. Execute zsh -l
para executar um shell de login ou faça login em outro terminal e veja o que quebra.
Antes de mudar seu shell de volta para o zsh, teste que zsh -l
funciona. Depois de executar chsh
, verifique se você pode fazer login em outro terminal antes de sair.