O comando chsh
lê o arquivo /etc/password
para a entrada do usuário e usa isso como o valor a partir do qual alterar o shell. Portanto, chsh
deve ter o mesmo valor que este comando imprime:
$ awk -F: '/'"$USER"'/ {print $7}' /etc/passwd
/bin/csh
Se o valor presente de $SHELL
também corresponde a esse valor, depende do valor que tinha quando o shell foi iniciado. Definir um valor e chamar csh não altera:
$ export SHELL=/bin/mysh
$ csh
% echo "$SHELL"
/bin/mysh
Se SHELL não estiver definido, ele também será mantido como não configurado em csh:
% exit
$ unset SHELL
$ csh
% echo $SHELL
SHELL: Undefined variable.
Mas não é bash:
% exit
$ unset SHELL
$ bash
$ echo $SHELL
/bin/bash
Assim, pode ser que o valor de SHELL esteja fora de sincronia com /etc/passwd
.