我想将 shell 从 bash 更改为 zsh。
我尝试以 zol 用户身份登录时运行以下命令:
$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.
# zsh exists in /etc/shells..
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh
可能出什么问题了?我该如何修复它?
答案1
如果您在尝试更改信息时打开了 /etc/passwd (vim /etc/passwd),则用户帐户修改将不会被保存。
替代方案:尝试使用 usermod (如 zol):
$ usermod -s /bin/zsh
或者
$ sudo usermod -s /bin/zsh zol
如果这也不起作用,请/etc/passwd
手动编辑。
sudo vipw
# set zol's shell to /bin/zsh
:wq
答案2
刚刚遇到这个。无论我做什么,登录和退出都不会改变我的 shell,但它已列在 /etc/shells 和 /etc/passwd 中。
最后我突然意识到:也许我已经用另一个会话登录了?
所以我做了
# who
它验证了我确实有来自其他机器的其他打开会话:
dom pts/0 Nov 6 13:53 (10.1.6.121)
dom pts/1 Nov 5 12:30 (10.1.6.165)
dom pts/2 Nov 4 12:33 (10.1.6.197)
然后我做了:
pkill -KILL -u dom
我立即注销并重新登录后:瞧!外壳已更改
答案3
如果您看到chsh: Shell not changed.
,则可能意味着 shell 已经更改。
检查列出的是哪个 shell:
cat /etc/passwd | grep `cd; pwd`
如果正确,请注销并重新登录以使更改生效。
答案4
改变它从/etc/passwd
我在使用 zsh 时遇到了一些问题(这是 manjaro 中的默认设置),我用它来返回 bash。
[infinito@manjaro ~]$ grep infinito /etc/passwd
infinito:x:1000:1000:Sergio N:/home/infinito:/bin/bash <---here