chsh e $ SHELL reportando diferentes reservatórios [fechados]

0

Eu mudei meu shell para csh (do bash) usando chsh e agora ele parece estar preso no csh. Especificamente, o que eu tenho agora é

% echo $SHELL
/bin/csh
% chsh
changing shell for USER
New shell[/bin/bash]: /bin/bash
Shell not changed.
%

Estou muito confuso sobre o que poderia estar acontecendo aqui. Gostaria de observar que reiniciei minha sessão entre a mudança de csh e bash, e que apenas a execução de bash muda para o shell bash novamente.

EDIT: Por algum motivo, começou a funcionar milagrosamente. Alguma ideia? por que isso pode ser

    
por Rufus Barbarossa 05.01.2018 / 05:35

1 resposta

1

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 .

    
por 05.01.2018 / 06:20

Tags