如何让 Ruby 在从 shell 脚本调用时查看 RVM 默认 Ruby

如何让 Ruby 在从 shell 脚本调用时查看 RVM 默认 Ruby

我的 ruby​​ 程序:

#echoHW.rb
while 1 < 2
  sleep(10)
  puts "hey!"
end

调用它的 bash(?) 脚本:

#echoHW.sh
ruby -v
ruby echoHW.rb "$@" & 

我安装了 rvm,尝试了“单用户”和“多用户”模式;我的默认设置为 1.9.3p125,但无论我做什么,当我运行它时,它都会运行 1.8.7,这显然是 ruby​​ 的“系统”版本。

我猜这是一个简单的修复 - 我希望脚本调用我用 RVM 设置为默认的 ruby​​ - 但我被难住了。

短暂性脑缺血发作

编辑: rvm 信息的输出:

qe2user@qe2server:~/Ruby/query_engine$ rvm 信息

ruby-1.9.3-p125:

系统:uname:“Linux qe2server 2.6.32-33-server #70-Ubuntu SMP 星期四 7 月 7 日 22:28:30 UTC 2011 x86_64 GNU/Linux” bash:“/bin/bash => GNU bash,版本 4.1.5(1)-release (x86_64-pc-linux-gnu)” zsh:“ => 未安装”

rvm:版本:“rvm 1.12.3 (stable) by Wayne E. Seguin , Michal Papis [htps://rvm.io/]”更新时间:“13 小时 39 分钟 42 秒前”

ruby:解释器:“ruby”版本:“1.9.3p125”日期:“2012-02-16”平台:“x86_64-linux”补丁级别:“2012-02-16 修订版 34643”完整版本:“ruby 1.9.3p125 (2012-02-16 修订版 34643) [x86_64-linux]”

家园:宝石:“/usr/local/rvm/gems/ruby-1.9.3-p125” ruby​​:“/usr/local/rvm/rubies/ruby-1.9.3-p125”

二进制文件:ruby:“/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby” irb:“/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/irb” gem:“/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/gem” rake:“/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin/rake”

环境:PATH:“/usr/local/rvm/gems/ruby-1.9.3-p125/bin:/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin:/usr/local/rv /rubies/ruby-1.9.3-p125/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games” GEM_HOME:“/usr/local/rvm/gems/ruby-1.9.3-p125” GEM_PATH:“/usr/local/rvm/gems/ruby-1.9.3-p125:/usr/local/rvm/gems/ruby-1.9.3-p125@global” MY_RUBY_HOME:“/usr/local/rvm/rubies/ruby-1.9.3-p125” IRBRC:“/usr/local/rvm/rubies/ruby-1.9.3-p125/.irbrc” RUBYOPT:“” 宝石集:“”

答案1

听起来您没有在 RVM 下正确设置默认的 Ruby 解释器。例如,使用正确安装的 RVM:

# Assumes that 1.9.3-p125 is already fully-installed under RVM.
rvm --default use ruby-1.9.3-p125

这将确保使用指定的 Ruby,而不是系统默认的 Ruby。您可以随时rvm use在 shell 提示符下更改当前 Ruby。

但是,如果您想在脚本中使用默认设置以外的其他内容,则可以用另一个使用 RVM 设置当前 Ruby 的 shell 脚本包装脚本。如果这不可行,您还可以直接在 shebang 行上调用特定解释器:

#!/home/user/.rvm/rubies/ruby-1.9.3-p125/bin/ruby

但这可能还需要您修改一些环境变量,例如 MY_RUBY_HOME 和 RUBY_VERSION(请参阅rvm info了解完整列表),以便使各种库和 gem 能够正常工作。

修改环境对你来说可能是必要的,也可能不是——很大程度上取决于你的 Ruby 脚本在做什么——但如果它必要时,你可以在命令行上使用各种选项,直到一切工作正常。例如:

$ MY_RUBY_HOME=~/.rvm/rubies/ruby-1.9.3-p125 \
    ~/.rvm/rubies/ruby-1.9.3-p125/bin/ruby -e 'puts("hello")'
hello

另外,阅读项目.rvmrc文件。这是确保您的工作环境使用特定应用程序所需的 Ruby 和 gemset 的另一种方式。

相关内容