Warum wird mein Ruby Git-Skript-Hook mit dem falschen $ PATH ausgeführt?

Ich benutze RVM. Ich habe einen Git geschriebenpre-commit Haken für ein Projekt:

#!/usr/bin/env ruby

puts RUBY_VERSION
puts `echo $PATH`
exit(1)

was dies ausgibt, wenn es von Git ausgeführt wird:

$ 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

Es scheint mit der falschen Version von Ruby zu laufen, weil$PATH ist nicht dasselbe wie in bash oder zsh oder sh. Es scheint, als würde der Schwachkopf manipulieren$PATH. Beim manuellen Ausführen erhalte ich Folgendes:

$ .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

In der Ausgabe des Commit-Hooks sind zwei Pfade vorangestellt, einer davon/usr/bin wo die ausführbare Datei des Systems Ruby abgelegt wird.

Ist das ein bekanntes Verhalten? Kann ich das irgendwie manipulieren? Ich weiß, ich könnte den vollständigen Pfad zur richtigen Ruby-Version im shebang angeben, aber das ist nicht das, was ich will.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage