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

在elementaryOS执行rvm list时出现命令未找到错误求助

为啥执行rvm list会弹出sudo相关错误,但最终还能正常输出?

嘿,我来给你拆解下这个问题——你遇到的这俩错误其实是shell兼容性搞的鬼,而且属于“报错但不影响核心功能”的情况,咱一步步说:

错误原因拆解

  1. sudo: [[: command not found
    [[是bash、zsh这类现代shell才支持的扩展条件判断语法,但elementOS属于Debian系,默认的sh指向的是dash(一个轻量但功能有限的shell)。当rvm内部调用sudo时,sudo默认会用系统的默认shell(也就是dash)来执行命令,而dash不认[[,所以直接抛出“命令找不到”的错误。

  2. sudo: __function_on_stack: command not found
    __function_on_stack是bash专属的内部函数,同样的道理,dash里根本没这个东西,sudo用dash执行时自然找不到,也就报错了。

为啥命令最后还能正常输出?

这些错误是rvm执行过程中非核心步骤里的报错——比如可能是rvm在检查某些权限、环境变量时触发的,但这些步骤不影响它最终读取Ruby版本列表的逻辑,所以报错之后,后续的正常流程还是能走完,你就能看到正确的版本输出了。

几个解决思路

  • 让sudo默认用bash执行:
    用visudo命令编辑/etc/sudoers(一定要用visudo,避免语法错误导致sudo失效),添加一行:
    Defaults env_keep += "SHELL"
    
    或者在rvm的配置里指定sudo用bash,比如在~/.rvmrc文件里加:
    rvm_sudo_flags="-s"
    
  • 检查rvm配置文件:
    看看~/.rvmrc或者/etc/rvmrc里有没有自定义的sudo调用逻辑,是不是写了bash专属的语法但没指定shell。
  • 更新rvm到稳定版:
    有时候这类shell兼容问题会在rvm的更新里被修复,执行rvm get stable更新试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:49:21