bashからcshに変更シェルを使用しましたが、chsh
今はcshに閉じ込められているようです。具体的に今私が持っているのは
% echo $SHELL
/bin/csh
% chsh
changing shell for USER
New shell[/bin/bash]: /bin/bash
Shell not changed.
%
私はここで何が起こっているのかとても混乱しています。 cshとbashからの切り替えの間にセッションを再開し、bash
bashシェルへの切り替えを再度実行したことを指摘したいと思います。
編集する:何らかの理由でそれは奇跡的に動作し始めました。どんなアイデアがありますか?なぜそうなのか
答え1
このコマンドはユーザー項目ファイルをchsh
読み取り、それを値として使用してシェルを変更します。/etc/password
したがって、chsh
このコマンドで印刷される値は同じでなければなりません。
$ awk -F: '/'"$USER"'/ {print $7}' /etc/passwd
/bin/csh
〜これ展示する値は、$SHELL
シェルの起動時の値に応じて、その値とも一致します。値を設定してcshを呼び出しても値は変わりません。
$ export SHELL=/bin/mysh
$ csh
% echo "$SHELL"
/bin/mysh
SHELLが設定解除された場合、cshは設定解除されたままです。
% exit
$ unset SHELL
$ csh
% echo $SHELL
SHELL: Undefined variable.
しかし、Bashではそうではありません。
% exit
$ unset SHELL
$ bash
$ echo $SHELL
/bin/bash
したがって、SHELLの値が同期されない可能性があります/etc/passwd
。