シェルスクリプトから呼び出されたRubyにRVMのデフォルトRubyを表示させる方法

シェルスクリプトから呼び出されたRubyに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 info の出力:

qe2user@qe2server:~/Ruby/query_engine$ rvm 情報

ruby-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.5(1)-release (x86_64-pc-linux-gnu)" zsh: " => インストールされていません"

rvm: バージョン: "rvm 1.12.3 (安定版) 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]"

ホーム: gem: "/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: "" gemset: ""

答え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シェル プロンプトでいつでも現在の Ruby を変更できます。

ただし、スクリプト内でデフォルト以外のものを使用したい場合は、RVM を使用して現在の Ruby を設定する別のシェル スクリプトでスクリプトをラップすることができます。それができない場合は、シェバン行で特定のインタープリターを直接呼び出すこともできます。

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

rvm infoただし、さまざまなライブラリや gem を動作させるためには、MY_RUBY_HOME や RUBY_VERSION (完全なリストについてはを参照) などのいくつかの環境変数を変更する必要がある場合もあります。

環境を変更する必要があるかどうかは、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 が作業環境で使用されていることを確認するためのもう 1 つの方法です。

関連情報