我最初的问题:
当我运行时,
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]: