Shell

執行 chsh 不會改變 shell

  • April 21, 2021

我想將我的 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

有什麼問題?我該如何解決?

如果您在嘗試更改資訊時打開了 /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

剛碰到這個。無論我做了什麼登錄和退出都不會改變我的 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

我立即退出並重新登錄後:瞧!外殼變了

引用自:https://unix.stackexchange.com/questions/39881