実行環境
- macOS Monterey 12.2.1
- rbenv 1.2.0
事象
rbenvでローカルバージョンを指定したのにruby -vするとシステムのrubyバージョンが表示される。
$ rbenv local 2.7.5
$ ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21]
2.7.5になってない!なんで!?という状態です。
原因
パスが通っていないことが多い。
- rubyコマンドがどのディレクトリの実行ファイルを呼んでいるか確認してみましょう
which ruby
/usr/bin/ruby #←これ、macのRuby
rbenvのパスは/Users/
macのユーザ名/.rbenv/shims:
なので、
これのパスを通してやる必要があります。
ちなみにパスを通すというのはPATHという環境変数にrbenvのプログラムが格納されているディレクトリを追加することを言います。
- 現在のパスを確認してみましょう
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
上記にrbenvのパスがないことが分かると思います。
対策
rbenvのパスを通すために、まずはご自分のmacでは何のシェルが使われているか確認してみましょう。
echo $SHELL
/bin/zsh
macOS Catalina から、Mac は zsh をデフォルトのログインシェルおよびインタラクティブシェルとして使うようになります。
引用元:zsh を Mac のデフォルトシェルとして使う
.zshrcに以下を追記します。
(使用しているのがbashであれば.bash_profileに追記してください)
echo eval "$(rbenv init -)" >> .zshrc
シェルへの変更を反映します。
source ~./zshrc
再度、パスを確認してみます。
echo $PATH
/Users/**macのユーザ名**/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
パスは左から優先して読み込まれます。
この場合、rbenvのパスが優先されることになります。
最後に、アプリのディレクトリに移動してRubyバージョンを確認してみます。
ruby -v
ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-darwin21]
念の為、一個上の階層に移動してRubyのバージョンを確認してみます。
ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21]
ローカルバージョンも、グローバルバージョンも想定通りになりました。