Bash

如何通知系統的其餘部分我的 shell 已從 zsh 更改為 bash?

  • February 8, 2016

我安裝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. 沒有引用zshin.bashrc.profile,也沒有 in /etc/profile

如何讓系統的其餘部分知道我的 shell 不是zsh

chsh命令僅允許您將登錄 shell 從 中列出的 shell 更改為 中列出/etc/shells的 shell /etc/shells。這是一項安全性和安全性功能:如果帳戶具有受限 shell(未在 中列出/etc/shells),則他們無法通過切換到另一個 shell 來升級其訪問權限;並且使用者不能通過切換到他們無法更改的外殼來鎖定自己。root 使用者當然不受此限制。

檢查/etc/shells不考慮命名文件的替代方法,例如符號連結。如果是/etc/shellslists /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.

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