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

Ubuntu中向/etc/shells添加Xonsh时遭遇权限拒绝问题求助

Ubuntu中向/etc/shells添加Xonsh时遭遇权限拒绝问题求助

嗨,我来帮你搞定这个权限问题!

你遇到的核心问题其实是重定向操作(>>)不受sudo的权限覆盖——你输入的sudo which xonsh >> /etc/shells里,sudo只给which xonsh赋予了root权限,但后面的写入/etc/shells的操作还是用你当前普通用户的身份执行,自然会被系统拒绝。而且/etc/shells是系统关键配置文件,默认的权限机制(甚至可能有AppArmor这类安全工具限制)不允许随便修改它的权限,所以chmod u+x也会失败。

给你几个靠谱的解决办法:

  • 方法一:用sudo tee追加内容(推荐)
    tee命令可以在sudo权限下安全地向文件追加内容,不会覆盖原有数据:

    sudo tee -a /etc/shells <<< "$(which xonsh)"
    

    这里-a是追加模式,<<< "$(which xonsh)"是把which xonsh的输出作为输入传给tee,完美避开重定向的权限坑。

  • 方法二:用shell命令包裹整个操作
    把包含重定向的整个命令放在sudo启动的shell环境里执行,这样整个流程都用root权限:

    sudo sh -c 'which xonsh >> /etc/shells'
    

完成后记得验证一下:执行cat /etc/shells,看看最后一行是不是Xonsh的正确路径(比如/usr/local/bin/xonsh)。确认没问题后,就可以用chsh -s /你的xonsh路径把它设为默认shell,重启终端或者重新登录就生效啦!

备注:内容来源于stack exchange,提问作者Omar Morales Rivera

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 09:38:13