我刚刚在 Ubuntu 20.04 上安装了 zsh,并决定将其改回 bash。我尝试了常用方法,chsh
但不起作用。
当前 shell
wolf@linux:/home/wolf $ echo $SHELL
/bin/zsh
wolf@linux:/home/wolf $
第一次尝试
wolf@linux:/home/wolf $ sudo chsh -s /bin/bash
wolf@linux:/home/wolf $ echo $SHELL
/bin/zsh
wolf@linux:/home/wolf $
第二次尝试
wolf@linux:~$ sudo chsh --shell=/bin/bash $USER
wolf@linux:~$ echo $SHELL
/bin/zsh
wolf@linux:~$
第三次尝试
wolf@linux:~$ chsh -s $(which bash)
Password:
wolf@linux:~$ echo $SHELL
/bin/zsh
wolf@linux:~$
即使 bash 和 exec bash 也不起作用
wolf@linux:/home/wolf $ bash
wolf@linux:~$ echo $SHELL
/bin/zsh
wolf@linux:~$ exec bash
wolf@linux:~$ echo $SHELL
/bin/zsh
wolf@linux:~$
答案1
chsh
更改密码数据库中的 shell 字段,该字段在登录时读取。要查看更改的效果,您需要启动一个新登录会话- 例如su -
:
例如确认当前登录 shell 是 bash:
steeldriver@DESKTOP:~$ getent passwd steeldriver
steeldriver:x:1000:1000:,,,:/home/steeldriver:/bin/bash
steeldriver@DESKTOP:~$ echo $SHELL
/bin/bash
更改 shell - 密码数据库立即更新,但值$SHELL
不变
steeldriver@DESKTOP:~$ chsh -s /usr/bin/zsh
Password:
steeldriver@DESKTOP:~$ getent passwd steeldriver
steeldriver:x:1000:1000:,,,:/home/steeldriver:/usr/bin/zsh
steeldriver@DESKTOP:~$ echo $SHELL
/bin/bash
现在开始一个新的登录会话:
steeldriver@DESKTOP:~$ su - steeldriver
Password:
steeldriver@DESKTOP-SPDO14V ~ % echo $SHELL
/usr/bin/zsh
答案2
chsh -s /bin/bash
(提示时输入密码)- 登出
- 重新登录
echo $SHELL
确认