如何通知系統的其餘部分我的 shell 已從 zsh 更改為 bash?
我安裝
zsh
是因為我認為我可能更喜歡它bash
。我沒有,並且為了恢復它我已經使用過chsh -s /bin/bash
,正如我自己給出的那樣You may not change the shell for 'cat'.
我也改變了我的線路
/etc/passwd
:cat:x:1000:1000:cat,,,:/home/cat:/bin/zsh
到
cat:x:1000:1000:cat,,,:/home/cat:/usr/bin/bash
(因為
which bash
給了/usr/bin/bash
)。GNOME 終端、、
xterm
術語等現在都同意我的 shell 是bash
.但是,當我通過按 進入虛擬終端時
Ctrl
Alt
N
,數字鍵在哪裡n
,並嘗試以我自己的身份登錄,例如Ubuntu 15.10 mint-kitty ttyN mint-kitty login: cat Password: /bin/zsh: no such file or directory exit
出現,然後我退出。
我可以很好地登錄圖形會話。(MDM + 肉桂。)
據我所知,使用者的登錄 shell 由
/etc/passwd
. 沒有引用zsh
in.bashrc
或.profile
,也沒有 in/etc/profile
。如何讓系統的其餘部分知道我的 shell 不是
zsh
?
該
chsh
命令僅允許您將登錄 shell 從 中列出的 shell 更改為 中列出/etc/shells
的 shell/etc/shells
。這是一項安全性和安全性功能:如果帳戶具有受限 shell(未在 中列出/etc/shells
),則他們無法通過切換到另一個 shell 來升級其訪問權限;並且使用者不能通過切換到他們無法更改的外殼來鎖定自己。root 使用者當然不受此限制。檢查
/etc/shells
不考慮命名文件的替代方法,例如符號連結。如果是/etc/shells
lists/bin/bash
,那麼使用者數據庫中的條目必須是/bin/bash
,而不是/bin/./bash
(這是同一個文件)或/usr/bin/bash
(即使這是指向 的符號連結/bin/bash
)。如果您要從 shell 中移除,則需要
chsh
在解除安裝舊 shell 之前執行切換回來,因為解除安裝會從/etc/shells
.我建議將你的 shell 改回
/bin/bash
; 您需要以 root 身份進行操作。這樣你chsh
以後就可以再次跑步了。在 Linux 下,對於本地帳戶,輸入項
/etc/passwd
決定了使用者的登錄 shell。(對於其他一些 Unix 變體,情況並非如此,其中/etc/passwd
存在是為了兼容但不是實際參考,因此/etc/passwd
不得修改或在修改後必須呼叫某些同步命令。)我無法解釋引用在哪裡
/bin/zsh
揮之不去。確保在/etc/passwd
.