RVMを使用しています。プロジェクトの Gitpre-commit
フックを作成しました。
#!/usr/bin/env ruby
puts RUBY_VERSION
puts `echo $PATH`
exit(1)
Git で実行すると、次のように出力されます。
$ git ci -m 'foo'
1.8.7
/usr/libexec/git-core:/usr/bin:/usr/local/heroku/bin:/Users/mgoerlich/.rvm/gems/ruby-2.0.0-p195@global/bin:/Users/mgoerlich/.rvm/rubies/ruby-2.0.0-p195/bin:/Users/mgoerlich/.rvm/bin:/Users/mgoerlich/adt-bundle-mac-x86_64-20130219/sdk/platform-tools:/Users/mgoerlich/adt-bundle-mac-x86_64-20130219/sdk/tools:/usr/local/bin:/usr/local/sbin:/Users/mgoerlich/.dotfiles/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/bin/core_perl:/Users/mgoerlich/bin:/usr/local/share/npm/bin:/usr/local/share/npm/bin
$PATH
bash や zsh や sh と同じではないため、間違ったバージョンの Ruby で実行されているようです。git が操作しているようです$PATH
。手動で実行すると、次のようになります。
$ .git/hooks/pre-commit
2.0.0
/usr/local/heroku/bin:/Users/mgoerlich/.rvm/gems/ruby-2.0.0-p195@global/bin:/Users/mgoerlich/.rvm/rubies/ruby-2.0.0-p195/bin:/Users/mgoerlich/.rvm/bin:/Users/mgoerlich/adt-bundle-mac-x86_64-20130219/sdk/platform-tools:/Users/mgoerlich/adt-bundle-mac-x86_64-20130219/sdk/tools:/usr/local/bin:/usr/local/sbin:/Users/mgoerlich/.dotfiles/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/bin/core_perl:/Users/mgoerlich/bin:/usr/local/share/npm/bin:/usr/local/share/npm/bin
commit フックの出力には、先頭に追加された 2 つのパスがあり、そのうちの 1 つは/usr/bin
システム Ruby の実行可能ファイルが置かれている場所です。
これは既知の動作ですか? 何とかそれを操作できますか?シバンで正しいRubyバージョンへのフルパスを指定できることは知っていますが、これは私が望むものではありません。