subsistema - ¿Hay alguna manera de ejecutar scripts Bash en Windows?
subsistema linux windows 10 (8)
¿Mejor opción? Windows 10. Soporte Native Bash!
He comprado y uso Windows 7 Ultimate, y me gusta usarlo para desarrollar aplicaciones. Uno de los aspectos negativos (como con cada sistema operativo) es que no puedo ejecutar scripts de Bash. ¿Hay alguna manera de ejecutar scripts Bash en Windows instalando algún software? Está bien si no funciona al 100%, pero mientras esté disponible la funcionalidad más común, debería ser genial.
Después de instalar git-extentions ( https://code.google.com/p/gitextensions/ ), puede ejecutar el archivo .sh desde el símbolo del sistema. (No se requiere ./script.sh, simplemente ejecútelo como un archivo bat / cmd) O puede ejecutarlos en un entorno de bash "completo" utilizando el shell basG MinGW Git.
No soy un gran admirador de Cygwin (sí, estoy seguro de que es realmente poderoso), por lo que ejecutar secuencias de comandos bash en Windows sin tener que instalarlo perfecto para mí.
Hay una posibilidad más teórica de hacerlo: las versiones profesionales de Windows tienen soporte POSIX incorporado, por lo que bash podría haberse compilado para Windows de forma nativa.
Lástima, pero todavía no he encontrado uno compilado ...
Instale Cygwin , que incluye Bash entre muchas otras utilidades de GNU y Unix (sin las cuales es poco probable que bash sea muy útil de todos modos).
Otra opción es MSYS de MinGW, que incluye bash y un conjunto más pequeño de las utilidades más importantes, como awk. Personalmente, hubiera preferido Cygwin porque incluye herramientas de elevación tan pesadas como Perl y Python, que encuentro que no puedo vivir sin ellas, mientras que MSYS las escanea y supone que vas a instalarlas tú mismo.
Actualizado : Si alguien está interesado en esta respuesta y ejecuta MS-Windows 10, tenga en cuenta que MS-Windows 10 tiene una característica " Subsistema de Windows para Linux " que, una vez habilitada, le permite instalar una imagen de Ubuntu y modo de usuario luego ejecuta Bash en eso. Esto proporciona 100% de compatibilidad con Ubuntu para depurar y ejecutar scripts Bash, pero esta configuración es completamente independiente de Windows y no puede usar scripts Bash para interactuar con las características de Windows (como procesos y API) excepto el acceso limitado a archivos a través de la función DrvFS .
La mejor opción que pude encontrar es Git Windows Simplemente instálela y luego haga clic derecho y haga clic en "Git Bash Here" esto abrirá una ventana bash
Esto abrirá una ventana bash como esta:
y los comandos de Linux funcionan ...
He intentado con los comandos ''sh'', ''vi'', ''ssh'', ''curl'', etc ...
Para ejecutar de forma nativa, es probable que necesite utilizar Cygwin (que no puedo vivir sin usar Windows). Así que, de inmediato, +1 para Cygwin. Cualquier otra cosa sería poco civilizado.
SIN EMBARGO, dicho esto, recientemente comencé a usar una combinación de utilidades para enviar scripts PORT Bash fácilmente a Windows para que mis compañeros de trabajo anti-Linux puedan ejecutar fácilmente tareas complejas que se manejan mejor con las utilidades de GNU.
Normalmente puedo portar un script Bash a Batch en muy poco tiempo abriendo el script original en un panel y escribiendo un archivo Batch en el otro panel. Las herramientas que utilizo son las siguientes:
- UnxUtils ( http://sourceforge.net/projects/unxutils/ )
- Bat2Exe ( http://bat2exe.net/ )
Prefiero UnxUtils a GnuWin32 por el hecho de que [alguien por favor me corrige si estoy equivocado] Normalmente, las utilidades de GnuWin deben ser instaladas, mientras que las UnxUtils son binarias independientes que solo funcionan de fábrica.
Sin embargo, los CoreUtils no incluyen algunas utilidades familiares * NIX como cURL, que también está disponible para Windows (curl.haxx.se/download.html).
Creo una carpeta para los proyectos, y siempre SET PATH =. en el archivo .bat para que no se haga referencia a ningún otro comando que no sean los comandos de shell CMD básicos (así como a los UnxUtils específicos necesarios en la carpeta del proyecto para que el script de Batch funcione como se espera).
Luego, copio los archivos necesarios de CoreUtils .exe en la carpeta del proyecto y los menciono en el archivo .bat, como ". / Curl.exe -s google.com", etc.
El programa Bat2Exe es donde sucede la magia. Una vez que su archivo Batch esté completo y haya sido probado con éxito, inicie Bat2Exe.exe y especifique la ruta a la carpeta del proyecto. Bat2Exe luego creará un binario de Windows que contenga todos los archivos en esa carpeta específica, y usará el primer .bat que encuentre para usar como el ejecutable principal. Incluso puede incluir un archivo .ico para usar como el icono del archivo .exe final que se genera.
He intentado algunos de estos tipos de programas, y muchos de los binarios generados se marcan como malware, pero la versión de Bat2Exe a la que hice referencia funciona perfectamente y los archivos .exe generados se escanean completamente.
El ejecutable resultante se puede ejecutar de forma interactiva haciendo doble clic, o ejecutándose desde la línea de comandos con parámetros, etc., como un archivo por lotes normal, excepto que podrá utilizar la funcionalidad de muchas de las herramientas que normalmente usará en Bash.
Me doy cuenta de que esto se está volviendo bastante largo, pero si puedo desviarme un poco, también he escrito un script por lotes que llamo PortaBashy y que mis compañeros de trabajo pueden iniciar desde un recurso compartido de red que contiene una instalación portátil de Cygwin. Luego establece la variable% PATH% en el formato * NIX normal (/ usr / bin: / usr / sbin: / bin: / sbin), etc. y puede iniciarse en el propio shell Bash o iniciar el más poderoso y bonito emulador de terminal MinTTY.
Siempre hay numerosas formas de lograr lo que intentas hacer; solo se trata de combinar las herramientas adecuadas para el trabajo, y muchas veces se reduce a las preferencias personales.
Si está buscando algo un poco más nativo, puede usar getGnuWin32 para instalar todas las herramientas de línea de comandos de Unix que se han portado. Eso más win-bash.sourceforge.net te brinda la mayor parte de un entorno Unix que funciona. ¡Agregue console2 para un mejor emulador de terminal y casi no puede decirlo en Windows!
Cygwin es un conjunto de herramientas mejor en general, pero me he encontrado con problemas de sorpresa debido a la división entre él y Windows. Sin embargo, ninguna de estas soluciones es tan buena como un sistema nativo de Linux.
Es posible que desee considerar el uso de virtualbox para crear una máquina virtual de Linux con su distribución preferida. Configúrelo para compartir una carpeta con el host host, y puede usar un verdadero entorno de desarrollo de Linux y compartirlo con Windows. Solo ten cuidado con esos marcadores de EOL, te atrapan todo el tiempo.
Siempre puede instalar Cygwin para ejecutar un shell Unix en Windows. Utilicé Cygwin extensamente con Windows XP.