rbenv や nodenv などの XXenv で一瞬だけバージョンを切り替えたい場合

結論

二つの方法があります。実質的には、どちらも同じことです。以下、rbenv の場合を例として書きます。

1つ目の方法. RBENV_VERSION を設定した上で、ruby を実行する

具体例を見るとすぐに分かると思います。

$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
$ RBENV_VERSION=2.6.5 ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]

2つ目の方法. rbenv shell というコマンドを実行した上で、ruby を実行する(実行し終わったら --unset する)

これも具体例を見るとすぐに分かると思います。

$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
$ rbenv shell 2.6.5
$ ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]
$ rbenv shell --unset
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]

当該シェルを抜ければ rbenv shell で指定した値は無効になるので、--unset は必ずしも実行しなければいけないというわけではないです。

補足

  • 特に問題がなければ、1つ目の環境変数を指定する方法でいいと思います
  • 他の XXenv の場合も同様にして、例えば nodenv ならば NODENV_VERSION という環境変数を指定すればよいです
  • 既存のプロジェクトにおいて、.ruby-version などが存在しない場合に、リポジトリを汚さずに各種コマンドを実行する場合などに使うのかな、と思います
Powered by はてなブログ