无法将 shell 从 zsh 更改为 bash?

无法将 shell 从 zsh 更改为 bash?

我刚刚在 Ubuntu 20.04 上安装了 zsh,并决定将其改回 bash。我尝试了常用方法,chsh但不起作用。

参考: 将 shell 从 zsh 更改为 bash

当前 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

  1. chsh -s /bin/bash(提示时输入密码)
  2. 登出
  3. 重新登录
  4. echo $SHELL确认

相关内容