11Sep

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 los binarios de Windows y los comandos estándar del Comando de comandos, directamente desde Bash. Puede ejecutar programas Linux y Windows desde el mismo shell Bash, o incluso incorporar comandos de Windows en un script Bash.

Lo que necesita saber

Aquí hay algunos detalles básicos que necesita saber sobre esta característica: Cuenta de usuario de

  • : Los programas lanzados desde el shell de Bash se ejecutarán como si hubieran sido 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.
  • Working Directory : 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, mostrará el contenido del directorio de trabajo actual en el shell Bash. Use el comando cd para cambiar los directorios de trabajo.

Con esto 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 las mayúsculas y minúsculas correctas.

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. Tienes que "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/ Program \ Files \ \( x86 \) / Internet \ Explorer / iexplore.exe

Tenga en cuenta la "\" antes del espacio y los caracteres de corchetes. Estos caracteres deben ser "escapados" o Bash no se dará cuenta de que los caracteres 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 desea hacer ping a example.com, ejecutará:

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

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

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

Usted usa 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 podría ejecutar en un símbolo del sistema. Para ejecutar un comando de este tipo, debe ejecutar el binario cmd.exe asociado con el símbolo del sistema y pasarlo como un argumento con / C, de la siguiente manera:

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

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

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

Cómo agregar directorios a la ruta

El entorno de Servicios de Windows para Linux trata los ejecutables de Windows de forma similar a 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 de acceso, ejecutaría:

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

Luego, puede ejecutar los archivos. exe de Windows ubicados en la carpeta System32 directamente, así:

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

Cómo conectar 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 grep de Linux para buscar el resultado. Por ejemplo, para mostrar toda la información sobre su conexión y buscar secciones que coincidan con "Dirección IPv4", ejecutaría:

/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 de Bash, para que pueda escribir un script de Bash que incorpore los comandos de Windows y las utilidades de Linux. Si se ejecuta en el shell Bash, funcionará en un script Bash.

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

ARTÍCULOS RELACIONADOS
Cómo crear y ejecutar comandos Bash Shell en Windows 10
Cómo ejecutar comandos Linux desde fuera del Bash Shell en Windows 10