Quiero llamar a una function bash desde el shell git bash, usando un alias git, así que hice que mi file .gitconfig se vea así:
[alias] jjj = "!f() { source "test_script.sh"; foo $@; }; f;" st = status
Mi test_script.sh está en
/c/Users/myname/scripts/
El file test_script.sh se ve así:
#!/bin/bash function foo { echo "This is a test script, calling foo!!!"; }
Mi ruta se ve así:
/c/Users/myname/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/myname/bin:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/Program Files/nodejs:/cmd:/c/Program Files (x86)/Brackets/command:/c/Program Files/Java/jdk1.8.0_111/bin:%APPDATA%/../Local/Android/sdk/platform-tools:/c/Users/myname/scripts:/c/Users/myname/AppData/Roaming:/c/Users/myname/scripts:/usr/bin/vendor_perl:/usr/bin/core_perl:/c/Users/myname/scripts
Lo que obtengo al ejecutar: git jjj
es:
f() { source 'test_script.sh' && foo $@; }; f;: line 0: source: test_script.sh: file not found
Este error es a pesar de tener la ruta a mi file test_script.sh en mi variable de entorno PATH. Tenga en count que cuando ejecuto test_script.sh desde cualquier lugar, consigo activar el test_script.sh
P: ¿Cómo puedo resolver esto o mejor depurar esto? esto me está conduciendo sándwich de plátano
Mi configuration es:
Si no desea utilizar la ruta absoluta del file (porque desea que el alias sea reutilizable en un context diferente), debe verificar cuál es realmente su RUTA.
Reemplace su alias con echo $PATH; shopt sourcepath
echo $PATH; shopt sourcepath
Eso verificará tanto su PATH
como si se permite el uso de la source
(consulte man bash : si la opción sourcepath
al command shopt
está desactivada, no se busca la shopt
)
Como se ve en los comentarios, el PATH no se exportó (por lo que los subprocesss como el generado por el alias, no henetworkingaron dicha variable)
Y agregarlo ( export PATH=...
) en .bashrc
no fue suficiente.
Al ver " Bash no lee .bashrc
less que se haya iniciado manualmente " y bashrc
no se cargó en /bin/bash
shell , necesita un %USERPROFILE%\.bash_profile
el .bashrc
.