我正在使用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
如果有人能帮助解决这个问题,我将不胜感激。 谢谢你提前。
答案 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"