Acceso directo de Windows para ejecutar el script git bash
Suponiendo que tengo un test.sh script que ejecuta un servidor y Git Bash instalado, ¿cómo puedo crear un acceso directo de Windows que puedo hacer doble clic para ejecutar tesh.sh en Git Bash en primer plano y me permite ver la salida del servidor?
4 answers
Git bash ya es un archivo por lotes con contenido similar a este:
C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i"
Si desea ejecutar (y dejar en ejecución) un script de shell en el contexto del shell, especifíquelo en la línea de comandos. El truco es que cuando se interpreta el nombre del archivo de script, utiliza la ruta de Windows , no la ruta equivalente en el entorno sh/Git.
En otras palabras, para ejecutar el archivo D:\temp\test.sh
en el shell de Git y dejarlo en ejecución, cree este archivo por lotes :
C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i -- D:\temp\test.sh"
Por otro lado, si quieres ejecutar un script y recuperar tu shell , debes:
- Abre el shell tal cual
- Editar o crear
~/.profile
(tryvi ~/.profile
) - Añadir esta línea:
~/test.sh
(ajdust la ruta si es necesario)
Así que con un .profile
que se parece a esto:
echo Executing .profile
/bin/sh ~/test.sh
Y test.sh
que se ve así:
echo Hello, World!
Obtendrá este mensaje :
Welcome to Git (version 1.7.11-preview20120710)
Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
Executing .profile
Hello, World!
ixe013@PARALINT01 ~
$
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-05 15:38:35
Otras respuestas funcionan, pero hay una solución más corta, que responde plenamente a la pregunta , que era:
Cómo crear un acceso directo de Windows que puedo hacer doble clic para ejecutar
tesh.sh
en Git Bash
La respuesta es: agregue el siguiente comando al campo Target:
del atajo:
"C:\Git\bin\sh.exe" -l "D:\test.sh"
Donde, -l
es la abreviatura de --login
.
Para entender mejor lo que hace este comando, consulte con documentos oficiales de GNU sobre La invocación de Bash :
-l
(--login
): Haga que este shell actúe como si hubiera sido invocado directamente por login. Cuando el shell es interactivo, esto es equivalente para iniciar un shell de inicio de sesión conexec -l bash
. Cuando la cáscara es no es interactivo, se ejecutarán los archivos de inicio del shell de inicio de sesión.exec bash -l
oexec bash --login
reemplazará la actual shell con un shell de inicio de sesión Bash.
También tenga en cuenta que:
- Usted necesita la ruta completa a
sh.exe
o tenerla en su variable de entornoPATH
(como otros ya han señalado). - Si realmente necesita forzar la invocación del shell en modo interactivo, puede agregar la opción
-i
- El último parámetro es la ruta al script que tiene que ser ejecutado. Esta ruta debe estar en formato Windows.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-28 16:58:40
Recomendaría usar la variable de entorno %ComSpec%
, en lugar de la ruta absoluta a cmd
:
%ComSpec% /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"
O incluso solo la orden cmd
, que generalmente está disponible desde % PATH%:
cmd /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"
Si su C:\Program Files (x86)\Git\bin
agregado a PATH
(que también es una solución común y uno de los casos en TortoiseGit instalando) puede usar solo:
cmd /c "sh --login -i"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-28 21:41:18
La mejor solución en mi opinión:
Invoca el shell correcto, no hay ventanas innecesarias e invoca un script bash después; la ventana permanecerá abierta después de que el script salga:
-
Cree un acceso directo a
mintty.exe
en su escritorio, por ejemplo Edite las propiedades del acceso directo y cambie el destino (mantenga la ruta):
"C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Explicación de los parámetros:
-h always
mantiene la ventana abierta cuando el script terminado, por lo que la ventana no desaparecerá mientras todavía está leyendo la salida (eliminar si no necesita leer la salida y desea que la ventana se cierre automáticamente).
-l
hace que este shell actúe como si hubiera sido invocado directamente por login.
-e
sale inmediatamente si una canalización devuelve un estado distinto de cero (más información).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-28 10:43:26