¿Por qué mi enganche de script de Ruby Git se ejecuta con el $ PATH incorrecto?
Estoy usando RVM. Escribí un Gitpre-commit
gancho para un proyecto:
#!/usr/bin/env ruby
puts RUBY_VERSION
puts `echo $PATH`
exit(1)
que genera esto cuando es ejecutado por 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
Parece que se ejecuta con la versión incorrecta de Ruby porque$PATH
no es lo mismo que en bash o zsh o sh. Parece que git esta manipulando$PATH
. Cuando se ejecuta manualmente, obtengo esto:
$ .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
En la salida del gancho de confirmación, hay dos rutas precedidas, una de ellas/usr/bin
Donde se ubica el ejecutable del sistema Ruby.
¿Es este un comportamiento conocido? ¿Puedo manipular eso de alguna manera? Sé que podría especificar la ruta completa a la versión correcta de Ruby en el shebang, pero esto no es lo que quiero.