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

Debian11脚本执行gem install bundler报错‘gem: command not found’排查

问题解决方案

1. 解决gem: command not found错误

脚本执行时属于非交互式Shell,不会自动加载RVM的环境配置;而手动执行命令时是交互式Shell,会加载~/.bashrc或~/.profile里的RVM初始化内容,这是两者的核心差异。

  • 在脚本开头添加RVM环境加载语句:

    source "$HOME/.rvm/scripts/rvm"
    

    如果你的RVM是全局安装(配置文件在/etc/profile.d/rvm.sh),则改为:

    source /etc/profile.d/rvm.sh
    
  • 修改后的完整脚本示例:

    #!/bin/bash
    source "$HOME/.rvm/scripts/rvm"
    rvm install ruby-2.7.2
    gem install bundler --no-doc
    
  • 确保脚本具备执行权限:

    chmod +x /tmp/script.sh
    

2. 解决su -c运行脚本的权限问题

你之前的su命令参数顺序有误,且未模拟登录Shell导致环境变量未加载,同时可能存在RVM目录或脚本的权限配置问题。

  • 使用正确的su命令格式(模拟登录Shell以加载用户完整环境):

    su -l username -c "/tmp/script.sh"
    

    注:-l选项会让Shell以登录模式运行,自动加载用户的~/.bash_profile、~/.bashrc等配置,确保RVM环境被正确加载。

  • 检查并修复RVM目录权限(确保普通用户拥有读写权限):

    sudo chown -R username:username "$HOME/.rvm"
    
  • 确保脚本本身权限配置正确:

    chmod 755 /tmp/script.sh
    

验证方法

可以在脚本中添加环境检查语句,确认RVM是否正常加载:

#!/bin/bash
source "$HOME/.rvm/scripts/rvm"
echo "当前RVM路径: $rvm_path"
echo "当前Ruby版本: $(ruby --version)"
rvm install ruby-2.7.2
gem install bundler --no-doc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:32:46