Página principal » cómo » Cómo ejecutar programas de Windows desde el shell Bash de Windows 10

    Cómo ejecutar programas de Windows desde el shell Bash 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 de solicitud de comando, 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 necesitas saber sobre esta característica:

    • Cuenta de usuario: Los programas iniciados desde el shell de Bash se ejecutarán como si fueran lanzados 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, enumera los contenidos del directorio de trabajo actual en el shell Bash. Utilizar el discos compactos comando para cambiar 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 la capitalización correcta.

    Digamos que desea iniciar la utilidad Ping ubicada en C: \ Windows \ System32 \ PING.EXE. Ejecutarías 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" de los espacios, corchetes y otros caracteres complejos prefijándolos con un carácter "\".

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

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

    Note la "\" antes de los caracteres de espacio y corchete. 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 los argumentos directamente a los comandos que ejecutas.

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

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

    O, si quisiera abrir el archivo de hosts de Windows en el Bloc de notas, ejecutaría:

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

    Utiliza la ruta de archivo estándar de Windows cuando pasa 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, pero están integrados en el símbolo del sistema. Por ejemplo, esto incluye el dir comando que normalmente se ejecuta en un símbolo del sistema. Para ejecutar dicho comando, debe ejecutar el comando cmd.exe binario asociado con el Símbolo del sistema y pásale el comando como un argumento con / C, así:

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

    Por ejemplo, para ejecutar el dir comando incorporado en el símbolo del sistema, ejecutaría 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 manera 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, ejecutaría:

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

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

    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 utilizar el ipconfig.exe -todos comando para listar detalles sobre sus interfaces de red y canalizarlo a Linux grep comando para buscar la salida. Por ejemplo, para enumerar toda la información sobre su conexión y buscar secciones que coincidan con la "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, por lo que puede 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 comandos Bash desde el símbolo del sistema estándar de Windows.