rbenvでRubyのバージョンが切り替わらなかったので、それのメモです。
事象
rbenvでバージョンを切り替えても変わりません
$ rbenv versions
system
2.6.6
* 2.7.1 (set by RBENV_VERSION environment variable)
$ rbenv global 2.6.6
$ rbenv versions
system
2.6.6
* 2.7.1 (set by RBENV_VERSION environment variable)
やったこと
set by RBENV_VERSION environment variable
と言われているのですが、特にどこにも書いていません。
また.zshrc
でexport RBENV_VERSION=2.6.6
をすると、rbenvのversionはうまく変更されますが、
rubyのバージョンを確認しようとするとエラーになります。
$ rbenv versions
system
* 2.6.6 (set by RBENV_VERSION environment variable)
2.7.1
$ ruby -v
/Users/naoto.koyama/.rbenv/versions/2.7.1/bin/ruby: invalid option -: (-h will show valid options) (RuntimeError)
原因
Ruby 2.7の警告を抑制するために.zshrc
に書いているRUBYOPTの設定を書いていることが原因でした
$ cat ~/.zshrc
...
export RUBYOPT='-W:no-deprecated -W:no-experimental' # <- これが原因
上記を削除してから以下のコマンドを打てばOKです
$ unset RUBYOPT
$ rbenv global 2.6.6
$ rbenv versions
system
* 2.6.6 (set by /Users/naoto.koyama/workspace/portal/.ruby-version)
2.7.1
$ ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-darwin20]
参考
rbenvのrubyコマンドがすべて「invalid option -: (-h will show valid options) (RuntimeError)」それRUBYOPTが原因かも