$ PATH extendido en .bashrc no disponible dentro de script git hook

Necesito ejecutar un cierto command cuando se recibe un empuje en un repository. Ese binary está ubicado en una ruta personalizada que agregué a .bashrc y normalmente funciona desde el shell. Escribí un pequeño guión como un git hook. Sin embargo, las adiciones .bashrc no parecen afectar a este script.

Intenté poner bash ~/.bashrc en la parte superior del script, pero no funcionó. Si ejecuto el script manualmente, di $ sh post-receive , funciona bien. ¿Qué está mal?

La secuencia de commands probablemente se ejecuta como un usuario diferente o se invoca con opciones para deshabilitar características interactivas y / o secuencias de commands de inicio. Así es como debería ser; nada está "mal" aquí realmente.

Puedes agregar . /home/you/.bashrc como una solución rápida y sucia; o, más correctamente, simplemente modifique la RUTA del guión directamente; o, aún más correctamente, modularizar las dependencies, por ejemplo, colocando el código en un file separado que se .bashrc desde su .bashrc y desde este script, pero para este caso aislado, sin duda es exagerado.

El command para "include" un file de shell scipt se llama "fuente" o "punto"; en Bash, la source está disponible como sinónimo, pero en el shell Bourne adecuado, es un punto literal (también conocido como punto, punto):

 . /path/to/stuff 

Ese bash ~/.bashrc genera un nuevo shell que ejecuta el file llamado .bashrc , y cualquier estado que esté dentro de esta subshell se pierde naturalmente cuando esa subshell sale, lo que tiene que hacer antes de pasar a la segunda línea de su real script que contiene la llamada.

Verifique su .bashrc En algunas distribuciones, el final del script se omite cuando no se ejecuta en modo interactivo. Solo traiga las cosas útiles que necesita sobre la parte de omisión.

Parece que:

 # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac