在Rye gem中找不到rvm,ruby命令

时间:2011-10-06 08:44:12

标签: shell rvm

我正在使用ruby 1.8并安装了需要远程ssh到amazone的gem https://github.com/delano/rye

require 'rubygems'
require 'rye'

instance = Rye::Box.new('amazone_ip', :user => "ubuntu", :safe => false, :keys => "amazone_key")

我通过运行这些命令出错了

instance.execute 'rvm list' #bash: rvm: command not found
instance.execute 'ruby -v' #bash: ruby: command not found

如果我运行命令instance.execute'ls -la'就可以了。 我认为$ PATH加载存在问题,我已经检查了它

instance.execute 'echo $PATH'
#[/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games, , 0, ]

#But it's in server:
$echo $PATH
#/home/ubuntu/.rvm/gems/ruby-1.9.2-p290/bin:/home/ubuntu/.rvm/gems/ruby-1.9.2-p290@global/bin:/home/ubuntu/.rvm/rubies/ruby-1.9.2-p290/bin:/home/ubuntu/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

如果有人能帮助解决这个问题,我将不胜感激。 谢谢你提前。

3 个答案:

答案 0 :(得分:0)

我打赌你没有rvm加载,因为它没有加载你的本地.bashrc或者你的.bashrc中没有RVM加载行(源代码行),它在你的.bash_profile中。只需将RVM行移动到.bashrc,然后在.bash_profile末尾获取.bashrc即可。

如果它以sh兼容模式调用bash,那么你可以在你的.profile中设置BASH_ENV并将它指向你的.bashrc,然后以这种方式加载RVM。

答案 1 :(得分:0)

尝试

instance.execute('source ~/.bash_profile && rvm list')

答案 2 :(得分:0)

万一有人觉得有用,因为这是一个老问题-

对于非登录外壳,不会加载用户的路径和环境变量。

我需要将其添加到我的.bashrc文件的最上方。

[[ -s "/home/douser/.rvm/scripts/rvm" ]] && source "/home/douser/.rvm/scripts/rvm"