zsh 設定為 root 的預設 shell

zsh 設定為 root 的預設 shell

以 root 身分登入時可以將 zsh 設定為預設 shell 嗎?我這樣做chsh -s /bin/zsh並使用我的 root 密碼進行身份驗證,但失敗了。

答案1

一個技巧是將互動式 root shell 設定為使用 zsh,並保留非互動式 shell 繼續使用 /bin/sh。

這仍然可能導致其他回應中描述的「期望」問題,但至少您不會破壞任何非互動式進程。

將以下內容新增到 /root/.bashrc 的末尾

if [ ! -z "$PS1" ]; then
    exec /bin/zsh $*
fi 

答案2

一般來說,將 root shell 更改為遠離 /bin/sh 並不是一個好主意。最好是添加另一個帳戶,例如 zroot,其 UID 仍為 0,但使用 zsh 作為 shell。然而,要嘗試回答這個問題,如果您以 root 身份登錄,則不需要使用sudo.只需使用

chsh -s /bin/zsh root

root並根據 chsh 的請求提供密碼。值得明確指定“根”。

如果您以「fred」登入,則使用

sudo -i

並用密碼回答密碼請求fred's。這應該會給你一個 root shell。繼續操作,就像您最初以 root 身分登入一樣。

確保 /bin/zsh 在 /etc/shells 中列出。

答案3

您可能忘記執行它有root權限。執行以下命令:

$ sudo chsh -s /bin/zsh

答案4

不建議使用普通編輯器編輯 passwd 檔案來執行此用途

vipw

並將 shell 更改為 zsh,老實說,我不明白為什麼要更改 root shell,root 帳戶必須僅用於管理事務,對於正常工作,請使用非特權使用者。在此之後嘗試登入其他 tty 並退出(很重要)與當前 tty 斷開連接,如果有效,您可以看到新的 shell。如果您想立即使用 zsh,只需輸入 zsh 即可。結論

I want to use my new shell now = type zsh
I want to use my new shell + change = chsh -s or vipw

ps= 如果你的zsh 沒有安裝在這些路徑(/bin /sbin..)上,並且你必須使用root 進行單用戶登錄,則不會工作,因為找不到你的shell,這也可能發生在/ usr 分隔的系統上從 root/掛載到其他 lvm 或分割區

相關內容