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 或分区

相关内容