Cómo ejecutar programas de Windows desde Bash Shell de Windows 10

En la Actualización de creadores, el shell Bash de Windows 10 ahora le permite ejecutar binarios de Windows y comandos estándar del símbolo del sistema, directamente desde Bash.

En la Actualización de creadores, el shell Bash de Windows 10 ahora le permite ejecutar binarios de Windows y comandos estándar del símbolo del sistema, directamente desde Bash. Puede ejecutar programas de Linux y Windows desde el mismo shell de Bash, o incluso incorporar comandos de Windows en un script de Bash.

Lo que necesitas saber

Aquí hay algunos detalles básicos que necesita saber sobre esta función:

  • Cuenta de usuario : los programas iniciados desde el shell Bash se ejecutarán como si fueran iniciados por la cuenta de usuario actual de Windows.
  • Permisos : estos programas tendrán los mismos permisos que el proceso Bash.exe. Por lo tanto, si desea que estos comandos tengan acceso de administrador, deberá ejecutar el shell Bash como administrador.
  • Directorio de trabajo : los programas de Windows comparten el mismo «directorio de trabajo» que el shell Bash. Por lo tanto, si ejecuta un comando que enumera los contenidos del directorio actual, enumerará los contenidos del directorio de trabajo actual en el shell Bash. Use el comando cd para cambiar los directorios de trabajo.

Con eso en mente, echemos un vistazo a cómo ejecutar un programa.

Cómo ejecutar un programa de Windows

Para ejecutar un programa de Windows, ingrese la ruta al archivo .exe del programa en el shell Bash. Recuerde que su unidad Windows C: está disponible en/mnt/c en Bash. El entorno Bash también distingue entre mayúsculas y minúsculas, por lo que debe especificar la capitalización correcta.

Supongamos que desea iniciar la utilidad Ping ubicada en C: \ Windows \ System32 \ PING.EXE. Ejecutaría el siguiente comando:

 /mnt/c/Windows/System32/PING.EXE 

El siguiente comando no funcionaría, porque Bash distingue entre mayúsculas y minúsculas:

 /mnt/c/windows/system32/ping.exe 

Esto es un poco más complicado si la ruta contiene caracteres complejos como espacios y corchetes, como las carpetas de Archivos de programa. Debe «escapar» espacios, corchetes y otros caracteres complejos prefijándolos con un carácter «\».

Por ejemplo, supongamos que desea ejecutar el programa Internet Explorer ubicado en C: \ Archivos de programa (x86) \ Internet Explorer \ iexplore.exe. Tendría que ejecutar el siguiente comando en Bash:

/mnt/c/Programme \ Files \ \ (x86 \)/Internet \ Explorer/iexplore.exe 

Tenga en cuenta la «\» antes de los caracteres de espacio y paréntesis. Estos caracteres deben «escaparse» o Bash no se dará cuenta de que los personajes son parte de una ruta de archivo.

Cómo pasar un argumento a un comando

El shell Bash pasa argumentos directamente a los comandos que ejecuta.

Por ejemplo, si quisieras hacer ping a example.com, ejecutarías:

 /mnt/c/Windows/System32/PING.EXE example.com 

O, si desea abrir el archivo de hosts de Windows en el Bloc de notas, debe ejecutar:

 /mnt/c/Windows/System32/notepad.exe "C: \ Windows \ System32 \ drivers \ etc \ hosts" 

Utiliza la ruta de archivo estándar de Windows al pasar una ruta de archivo directamente a un programa de Windows. Eso es porque Bash pasa el argumento directamente. Notepad.exe y otros programas de Windows esperan una ruta de archivo de Windows.

Cómo ejecutar un comando incorporado

Algunos comandos de Windows no son archivos .exe, sino que están integrados en el símbolo del sistema. Por ejemplo, esto incluye el comando dir que normalmente puede ejecutar en un símbolo del sistema. Para ejecutar dicho comando, debe ejecutar el binario cmd.exe asociado con el símbolo del sistema y pasarle el comando como argumento con/C, de esta manera:

 /mnt/c/Windows/System32/cmd.exe/C command 

Por ejemplo, para ejecutar el comando dir integrado en el símbolo del sistema, debe ejecutar el siguiente comando:

 /mnt/c/Windows/System32/cmd.exe/C dir 

Cómo agregar directorios a la ruta

El entorno de Servicios de Windows para Linux trata los ejecutables de Windows de forma similar a como trata los binarios de Linux. Esto significa que puede agregar un directorio que contenga archivos .exe a la ruta y luego ejecutar esos archivos .exe directamente. Por ejemplo, para agregar el directorio System32 a su ruta, debe ejecutar:

 export PATH = $ PATH:/mnt/c/Windows/System32 

A continuación, puede ejecutar archivos .exe de Windows ubicados en la carpeta System32 directamente, de esta manera:

 PING.exe example.com 
 notepad.exe 
 cmd.exe/C dir 

Cómo canalizar la salida de un comando a otro

La salida de un comando de Windows se puede canalizar a un comando de Linux, y viceversa. Por ejemplo, puede usar el comando ipconfig.exe -all para enumerar detalles sobre sus interfaces de red y canalizarlo al comando Linux grep para buscar la salida.Por ejemplo, para enumerar toda la información sobre su conexión y buscar secciones que coincidan con «Dirección IPv4», debe ejecutar:

 /mnt/c/Windows/System32/ipconfig.exe -todos | grep "Dirección IPv4" 

Ese es el proceso básico. Estos comandos también funcionarán cuando se incorporen a un script Bash, por lo que puede escribir un script Bash que incorpore tanto los comandos de Windows como las utilidades de Linux. Si se ejecuta en el shell Bash, funcionará en un script Bash.

Y, si desea ir por el otro lado, puede usar el comando «bash -c» para ejecutar comandos Bash desde el símbolo del sistema estándar de Windows.

Rate article
labsfabs.com
Add a comment