¿Cómo ejecutar .sh en el símbolo del sistema de Windows?

¿Cómo puedo ejecutar .sh en Windows 7 Command Prompt? Siempre obtengo este error cuando bash ejecutar esta línea en él,

app/build/build.sh 

error,

 'app' is not recognized... 

o,

 bash app/build/build.sh 

error,

 'bash' is not recognized... 

¿Alguna idea de lo que me he perdido?

Aquí la captura de pantalla, enter image description here

El mensaje de error indica que no ha instalado bash , o que no está en su PATH .

El principal éxito de Google es http://win-bash.sourceforge.net/, pero también debe comprender que la mayoría de los scripts de Bash esperan un entorno tipo Unix; así que simplemente instalar Bash probablemente no le permita ejecutar un script que haya encontrado en la red, a menos que haya sido diseñado específicamente para este escenario de uso particular. La solución habitual es https://www.cygwin.com/ pero hay muchas alternativas posibles, dependiendo de qué es exactamente lo que quiere lograr.

Si Windows no es central para su escenario de uso, la instalación de un SO libre (quizás virtualizado) podría ser la forma más sencilla de avanzar.

El segundo mensaje de error se debe al hecho de que Windows acepta nominalmente la barra diagonal como separador de directorios, pero en este contexto, se interpreta como un separador de conmutadores. En otras palabras, Windows analiza su línea de comando como app /build /build.sh (o, para parafrasear con las convenciones de opciones de Unix, la app --build --build.sh ). Puede probar la app\build\build.sh pero es poco probable que funcione, debido a las circunstancias descritas anteriormente.

Instalar GIT . Durante la instalación de GIT, agregue GIT Bash al menú contextual de Windows seleccionando su opción. Después de la instalación, haga clic derecho en su carpeta, seleccione GIT Bash Here (ver la imagen adjunta) y use su comando sh como, por ejemplo:

 sh test.sh 

enter image description here

La forma más común de ejecutar un archivo .sh es usar el comando sh :

 C:\>sh my-script-test.sh 

Otra buena opción es instalar CygWin

en Windows el home está ubicado en:

 C:\cygwin64\home\[user] 

por ejemplo, ejecuto mi archivo my-script-test.sh usando el comando bash como:

 jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 

puedes usar también cmder

Cmder es un paquete de software creado por pura frustración sobre la ausencia de agradables emuladores de consola en Windows. Se basa en un software asombroso, y aderezado con el esquema de color Monokai y un diseño personalizado, atractivo desde el principio.

Captura de pantalla

cmder.net

En Windows 10 Anniversary Update, es aún más fácil ejecutar comandos de shell en / con bash en ubuntu en Windows

Estaba tratando de configurar mi región para mi enrutador x-wrt r7000 netgear, encontré que lo siguiente funcionó para mí, usando bash en ubuntu en Windows, tienes que habilitar el subsistema que se encuentra en las características de Windows, y el modo dev en

 ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh 

Nueva función en Windows: ejecute bash en ubuntu en Windows, disponible en versiones de Windows 10 “Insiders” después de la conferencia de comstackción:

https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/

Personalmente utilicé este archivo por lotes, pero requiere CygWin instalado (64 bits como se muestra). Simplemente asocie el tipo de archivo .SH con este archivo por lotes (ExecSH.BAT en mi caso) y puede hacer doble clic en .SH y se ejecuta.

 @echo off setlocal if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof set _CYGBIN=C:\cygwin64\bin if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof :: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT% for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%CD%"') do set _CYGPATH=%%A :: Throw away temporary env vars and invoke script, passing any args that were passed to us endlocal & %_CYGBIN%\mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%; %_CYGSCRIPT% %*' 

Basado en este trabajo original.