![如何让 Ruby 在从 shell 脚本调用时查看 RVM 默认 Ruby](https://linux22.com/image/1311790/%E5%A6%82%E4%BD%95%E8%AE%A9%20Ruby%20%E5%9C%A8%E4%BB%8E%20shell%20%E8%84%9A%E6%9C%AC%E8%B0%83%E7%94%A8%E6%97%B6%E6%9F%A5%E7%9C%8B%20RVM%20%E9%BB%98%E8%AE%A4%20Ruby.png)
我的 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 的另一种方式。