debian 9 使用zsh替代bash, 打开终端还是bash,只有使用su登陆后才变成zsh,什么问题?

debian 9 使用zsh替代bash, 打开终端还是bash,只有使用su登陆后才变成zsh,什么问题?

chsh -s /bin/zsh

使用上面的命令切换的

cat /etc/passwd

输出已经显示我的账号改为zsh了。
求指教

阅读 9.5k
3 个回答

看来你是把 root 的默认 shell 给改了……

你要改哪个用户的 shell,就用哪个用户运行 chsh 啊。或者指定用户名也行: chsh -s /bin/zsh username。

不建议直接修改 passwd 文件,尤其是你这种连 chsh 都弄错的新手,要是一不小心把 passwd 改坏了,你更是没办法修复了。

更新默认 shell 之后需要重新登录。桌面环境请注销然后登录,ssh 连接请完全断开连接(如果你配置了长连接,也要断掉)然后再登录。或者你重启也行。

另外一些图形界面的终端模拟器(以及 tmux)可以指定默认跑什么命令的。如果你配置过,那么你的默认 shell 不管怎么改也是没有用的。

重新启动了下虚拟机,问题好像解决了。

使用root用户运行chsh只更改当前操作用户默认的终端,如果要修改其他用户的默认终端,需要以其他用户身份运行chsh

不过,如果你有root的权限,有一个一次性修改其他用户默认终端的方法:

  • 打开/etc/passwd文件,此为用户配置文件,其中,以冒号分隔为一列,第一列为用户名,最后一列为默认shell的路径

  • 将需要切换默认终端为zsh的用户名对应行中,最后一列的/usr/bin/bash改为zsh的路径

  • 保存退出

  • 然后,你会发现其他用户默认也是使用zsh终端了

  • 如果你是使用SSH连接的,可能需要退出SSH重新连接才会生效

  • 如果/etc/passwd文件不存在,可以使用mkpasswd -l > /etc/passwd生成默认用户配置文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进