En Windows 10 Creators Update (compilación 1703, abril de 2017), esto se admite de forma nativa. Ahora puede ejecutar binarios de Windows desde Linux...
notepad.exe
o cualquier otro .exe
(se necesita la extensión y debe estar en su ruta, algunas versiones anteriores necesitan la ruta completa)
...y viceversa usando uno de los siguientes:
bash.exe -c command_to_run
es decir:bash.exe -c ls
bash -c command_to_run
es decir:bash -c ls
wsl command_to_run
es decir:wsl "ls"
; o especifica la distribución que quieres usar para ejecutarla usando:ubuntu run ls
Para obtener más información, consulte el artículo vinculado anterior.
por qué no simplemente usar
$ powershell.exe Start filename
Start
es el equivalente de Windows a xdg-open
en la mayoría de Linux o open
en macOS, que significa "abrir con la aplicación de escritorio predeterminada". Me gusta ponerle un alias para abrirlo.
Solución nativa
La solución oficial provista con Windows 10 Insider Preview Update (14951) se basa en el casi olvidado binfmt_msc Facilidad de Linux para lanzar binarios. El comando de registro para binfmt_misc sería así (donde /init
es el binfmt_misc provisional "intérprete" para los ejecutables win):
sudo echo ":WSLInterop:M::MZ::/init:" > /proc/sys/fs/binfmt_misc/register
Y luego el ejecutable win se iniciaría como programas normales:
$ export PATH=$PATH:/mnt/c/Windows/System32
$ notepad.exe
$ ipconfig.exe | grep IPv4 | cut -d: -f2
$ ls -la | findstr.exe foo.txt
$ cmd.exe /c dir
No es que cualquier ejecutable win deba residir en las ventanas (DrvFs ) sistema de archivos - no en el sistema de archivos de Linux (VolFs ) - para heredar un Windows adecuado directorio de trabajo.
El cbwin alternativa
Hasta que obtenga la última compilación, el proyecto cbwin ofrece una solución al instalar 3 nuevos comandos de Linux dentro de WSL:
wcmd
:llama a un ejecutable win a través decmd.exe
.wrun
:llama a un ejecutable win sincrónicamente conCreateProcess
y esperar a morir (sin usarcmd.exe
).wstart
:inicie un comando separado (asincrónicamente) (con el uso decmd.exe
).
Para usarlos, debe:
- Instalar cbwin :<último>
- un nuevo
outbash.exe
se instalará en su sistema de archivos normal de Windows (en algún lugar de su%PATH%
), más - los 3 comandos de Linux en el sistema de archivos WSL.
- Utilice este
outbash.exe
(donde sea que lo hayas instalado) para iniciar WSL, NOC:\Windows\System32\bash.exe
! - Prefije cualquier ejecutable win con uno de esos comandos, por ej.
wrun notepad
.
Consejo: Si el ejecutable se lanzó con wcmd
o wrun
genera niños, estos sobreviven solo mientras el ejecutable permanezca vivo.
En otras palabras, intentar iniciar notepad.exe
con wcmd
no funcionará, porque bloc de notas se eliminará justo después de haber sido lanzado -- Usa wrun
(sincrónicamente) o wstart
(asincrónicamente) en este caso.