概要
rbenvの仕組みについて
shims
unixのコマンドは$PATHを左から順に探します。
rbenvインストール前のパスは下記のようになっています。
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
この場合、例えばrubyコマンドは
/usr/local/sbin
/usr/local/bin
:
/bin
のような順で探されます。
rbenvはPATHの先頭にshimsを追加することで動作します。
%rbenv_home%/shims
を追加します。
その結果は下記のようになります。
%rbenv_home%/shims:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
これによりuser/local/bin等より前に%rbenv_home%/shimsでrubyの各コマンドを
発見することになります。
gemで新しいコマンドが増えた場合は、shimsの内容を最新化するために
rbenv rehashを実行する必要がある。
Ruby versionの決定順序
下記の順序で決定される
1.RBENV_VERSION環境変数の内容。
この内容はrbenv shellコマンドで設定出来ます。
$ echo $RBENV_VERSION # rbenvのglobalの設定を2.0.0p247にしてあります $ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] # RBENV_VERSIONのバージョンをsystemに設定 $ rbenv shell system $ echo $RBENV_VERSION system $ ruby -v ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux] $ rbenv versions * system (set by RBENV_VERSION environment variable) 2.0.0-p247 # RBENV_VERSIONのバージョンをクリア $ rbenv shell --unset $ echo $RBENV_VERSION $ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
2.実行中のscrpitファイルから探した「.ruby-version」ファイルの内容。
詳細は3とまとめて説明。
3.現在の作業ディレクトリから探した「.ruby_version」ファイルの内容。
このファイルの内容はrbenv localで設定出来ます。
例)
rbenv globalの設定内容が2.0.0p247の状態とします。
$ echo $RBENV_VERSION # rbenvのglobalの設定を2.0.0p247にしてあります $ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux] # rbenv localを実行して.ruby-versionの内容をsystemに変更します $ rbenv local system $ cat .ruby-version system $ ruby -v ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
4.「%rbenv_home%/version」の内容。
このファイルの内容はrbenv globalで設定出来ます。