我使用将 shell 更改为 csh(从 bash)chsh
,现在它似乎卡在 csh 中。具体来说,我现在拥有的是
% echo $SHELL
/bin/csh
% chsh
changing shell for USER
New shell[/bin/bash]: /bin/bash
Shell not changed.
%
我对这里发生的事情感到非常困惑。我想指出的是,我在从 csh 和 bash 切换之间重新启动了会话,并且只是bash
再次运行切换到 bash shell。
编辑:由于某种原因,它开始奇迹般地发挥作用。有任何想法吗?至于为什么会这样
答案1
该chsh
命令会读取/etc/password
用户条目的文件,并将其用作更改 shell 的值。因此,chsh
应该与此命令打印的值相同:
$ awk -F: '/'"$USER"'/ {print $7}' /etc/passwd
/bin/csh
是否展示的值$SHELL
也匹配这样的值取决于 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
。