11Sep
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.EXEEl siguiente comando no funcionaría, porque Bash distingue entre mayúsculas y minúsculas:
/mnt/c/windows/system32/ ping.exeEsto 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.exeTenga 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.comO, 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 CPor ejemplo, para ejecutar el directoriocomando integrado en el símbolo del sistema, ejecutaría el siguiente comando:
/mnt/c/Windows/System32/ cmd.exe / directorio CCó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/ System32Luego, puede ejecutar los archivos. exe de Windows ubicados en la carpeta System32 directamente, así:
PING.exe example.com notepad.exe cmd.exe / C dirCó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.