Como eu informo o resto do sistema que meu shell mudou de zsh para bash?

0

Instalei zsh porque achei que poderia preferir bash . Eu não faço isso, e para reverter eu usei chsh -s /bin/bash , que, como eu, dá You may not change the shell for 'cat'.

Eu também alterei minha linha em /etc/passwd de:

cat:x:1000:1000:cat,,,:/home/cat:/bin/zsh

para

cat:x:1000:1000:cat,,,:/home/cat:/usr/bin/bash

(porque which bash deu /usr/bin/bash ).

Terminal GNOME, xterm , Terminologia, etc, todos agora concordam que meu shell é bash .

Mas, quando eu entro em um terminal virtual pressionando Ctrl Alt N , onde n é uma tecla numérica, e tente faça o login como eu, algo como

Ubuntu 15.10 mint-kitty ttyN

mint-kitty login: cat
Password:


/bin/zsh: no such file or directory 
exit

aparece e, em seguida, eu estou desconectado.

Eu posso fazer login em uma sessão gráfica bem. (MDM + Canela.)

Tanto quanto sei, o shell de login de um usuário é determinado por /etc/passwd . Não há referências a zsh em .bashrc ou .profile nem em /etc/profile .

Como faço para o resto do sistema saber que meu shell não é zsh ?

    
por cat 07.02.2016 / 17:33

1 resposta

3

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 .

    
por 08.02.2016 / 01:39