You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改root shell为zsh后sudo su报「Cannot execute help...」的修复方法

修复Root Shell被错误设置为「help」的问题

你这是修改Root的登录Shell时不小心把路径写成了help,导致sudo su试图执行这个不存在的命令才报错的。别慌,咱们一步步把它改回来:

步骤1:确保在可用的Root环境中

你已经通过sudo bash进入了Root的Bash环境,接下来的操作都在这个环境里完成就行。

步骤2:确认Zsh的合法性

首先得保证/usr/bin/zsh是系统认可的登录Shell,执行命令查看系统允许的Shell列表:

cat /etc/shells

如果列表里有/usr/bin/zsh,直接往下走;要是没有,先把它添加进去(你之前已经装了Zsh,大概率是存在的):

echo "/usr/bin/zsh" >> /etc/shells

步骤3:修改Root的登录Shell

这里有两种安全的方法,选一种就行:

方法A:用chsh命令(推荐)

chsh是专门用来修改用户登录Shell的工具,会自动校验Shell的有效性,不容易出错:

chsh -s /usr/bin/zsh root

执行完直接生效,不需要额外确认。

方法B:手动编辑/etc/passwd文件(谨慎操作)

如果chsh命令没法用,可以手动修改系统用户配置文件:

  1. 打开文件:
vim /etc/passwd
  1. 找到以root开头的行,现在它应该是这样的:

root:x:0:0:root:/root:help

  1. 把最后一个字段help改成/usr/bin/zsh,修改后变成:

root:x:0:0:root:/root:/usr/bin/zsh

  1. 保存退出Vim(按Esc,输入:wq回车)。

步骤4:验证修改结果

执行命令检查Root的Shell是否已经正确设置:

grep root /etc/passwd

输出的最后一个字段应该是/usr/bin/zsh。

步骤5:测试修复效果

退出当前的Bash环境,执行sudo su或者su root,应该能正常进入Root的Zsh环境了。要是想确认当前Shell,执行:

echo $SHELL

会输出/usr/bin/zsh。


内容的提问来源于stack exchange,提问作者user274885

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:26:19