我使用 zsh 作为我的常规用户,但当我使用 root 时,我的 shell 是 Bash。我如何才能将 Zsh 也用于 root?

我使用 zsh 作为我的常规用户,但当我使用 root 时,我的 shell 是 Bash。我如何才能将 Zsh 也用于 root?

我最初的问题:

当我运行时,sudo su提示符zsh会变回 Bash。如何将 Zsh 设为 root 用户的默认 shell?

我对重复的回答:

关于何时将帖子视为重复的问题正在这里讨论:是否应该仅因为答案有帮助而将问题关闭为重复问题?

我引用第一个答案的第一段:

我看到的大多数观点都认为问题是重复的,而不是答案。因此,只有当问题相同时,才应将其作为重复问题关闭,而不是因为一个问题的答案也是另一个问题的答案。

然后是之后的第一句话:

然而,我不同意。

您可以随意查看该帖子以了解该用户的论点。

我个人,作为“大多数意见”,认为问题是重复的并且没有答案,因为我从来没有在该帖子中找到我的特定问题的答案:如何将 fish 设置为默认 shell?

巧的是,我引用的用户正是将我的帖子标记为重复的用户之一。

我试图为自己辩护,但可能方式不对。所以请不要对我的帖子投反对票,请理解,也许有些人只是想将默认 shell 扩展到所有用户,而其他人则想将特定 shell 设为默认。这不是同一种搜索,我认为这可以帮助社区。

答案1

你必须为你的 root 账户设置 shell

usermod -s /bin/zsh root

会做这项工作


这会更改文件中的条目/etc/passwd。它们看起来像这样

root:x:0:0:root:/root:/bin/bash

其中最后一个条目是登录 shell。您也可以手动编辑该文件。


请小心设置正确。usermod将不会检查(并且您将无法以 root 身份登录):

usermod -s /bin/blargh root
sudo -i
sudo: /bin/blargh: command not found

欲了解更安全的方法,请参阅@PerlDuck 的回答

答案2

除此之外usermod还有chsh更改 shell实用程序。它的优点是用户可以更改自己的 shell,而不会打扰用户root

我记得它显示了一个带有可用 shell 的小菜单,用户可以选择一个,但我当前的安装没有不是显示这样的菜单。可能是因为我没有安装其他 shell(除了 bash)。

pduck@myhost:~> chsh
Password: 
Changing the login shell for pduck
Enter the new value, or press ENTER for the default
    Login Shell [/bin/bash]: 

相关内容