當從 shell 腳本呼叫時,如何取得 Ruby 以查看 RVM 預設 Ruby

當從 shell 腳本呼叫時,如何取得 Ruby 以查看 RVM 預設 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​​——但我被難住了。

TIA

編輯:rvm資訊的輸出:

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

紅寶石-1.9.3-p125:

系統:uname:「Linux qe2server 2.6.32-33-server #70-Ubuntu SMP Thu Jul 7 22:28:30 UTC 2011 x86_64 GNU/Linux」bash:「/bin/bash => GNU bash,版本4.1. (1)-release (x86_64-pc-linux-gnu)" zsh: " => 未安裝"

rvm:版本:“rvm 1.12.3(穩定),由 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」full_version:「ruby 1.9. 3p125(2012) -02-16 修訂版 34643) [x86_64-linux]"

家: 寶石:“/usr/local/rvm/gems/ruby-1.9.3-p125” 紅寶石:“/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”

環境: 路徑:「/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,而不是系統預設值。您可以隨時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 的另一種方式。

相關內容