Use / agregue script de shell a msysgit

Estoy usando msysgit en Windows y escribí un script de shell simple que me gustaría usar. Agregué la carpeta donde está el file .sh a la variable PATH de mi computadora con Windows, pero cuando quiero usar mi script, tengo que escribir rd.sh en lugar de simplemente rd.

¿Cómo utilizo esto simplemente refiriéndome a su nombre rd y no al nombre completo del file con la extensión de file .sh (rd.sh)?

El shell proporcionado con msysgit es bash, que se ejecuta en un entorno emulado de Unix.

Si está ejecutando el script desde el shell bash, debe escribir el nombre del script, que en lo que respecta al entorno tipo Unix es rd.sh .sh no tiene un significado particular en un entorno Unix; son solo los últimos tres caracteres del nombre del file. La primera línea del script debe ser #!/bin/sh o #!/bin/bash ; esto se conoce como "shebang" .

Por otro lado, si desea ejecutarlo desde Windows (por ejemplo, desde un símbolo del sistema cmd.exe ), Windows usa la extensión .sh para determinar cómo ejecutarlo, y puede invocarlo como rd if ( a) está en un directory en %PATH% , y (b) Windows está configurado (en Opciones de carpeta y / o configurando %PATHEXT% ) para usar sh o bash para iniciar files .sh .

Si desea poder ejecutar el mismo script desde cualquier entorno, puede crear un enlace simbólico que se reconocerá en el entorno emulado de Unix. Por ejemplo, si rd.sh está en $HOME/bin , entonces esto:

 ln -s $HOME/bin/rd.sh $HOME/bin/rd 

creará el enlace simbólico apropiado. (Puede hacer que rd una copy de rd.sh , pero luego los cambios a uno no se aplicarán al otro).

Si solo necesita ejecutarlo desde bash, simplemente rd.sh rd lugar de rd.sh ; como mencioné, en lo que respecta a bash, la extensión .sh es solo parte del nombre y no tiene un significado particular. Es el #! línea, no la extensión .sh , que le dice a bash cómo ejecutar el script.

(Bueno, estrictamente hablando, no es Bash el que maneja el #! En los sistemas Unix o Linux actuales, es manejado por el kernel; no estoy seguro de cuál es el mecanismo exacto en msysgit).

Normalmente harías esto agregando la extensión .sh a la variable de entorno PATHEXT . PATHEXT es una list de extensiones separadas por punto y coma para tratar como ejecutable.

Sin embargo, dado que Windows no tiene soporte integrado para scripts de shell (aparte de los files por lotes y similares obviamente) no estoy 100% seguro de si esto funcionará.