¿Es posible abrir aplicaciones de Windows desde dentro de un subsistema de Windows para una terminal Linux?

¿Es posible abrir aplicaciones de Windows desde dentro de un subsistema de Windows para una terminal Linux?

Entonces, recientemente descargué una instalación Ubuntu de Linux para Windows porque quería aprender a usar un shell bash. Lo he estado disfrutando hasta ahora, pero me preguntaba si había alguna manera de hacer lo anterior. Digamos que tengo iTunes instalado en mi computadora y quiero abrirlo desde mi terminal Linux. ¿Es eso posible? Intenté ir a la carpeta del escritorio en la terminal y abrir los archivos .lnk, pero simplemente me arroja un mensaje "no se puede ejecutar el archivo binario: error de formato Exec". ¿Alguien sabe si es posible?

Respuesta1

Sí, WSL admite el inicio de aplicaciones de Windowsejecutables(como iTunes) desde dentro del shell. Sin embargo, como se mencionó en los comentarios, lnklos archivos sonnoapoyados, ya que no sonejecutables. Ellos sonEnlacesa ejecutables.

WSL también es lo suficientemente bueno como para agregar (de forma predeterminada) su ruta de Windows a su ruta de Linux. Entonces, para las aplicaciones que se encuentran en la ruta (por ejemplo notepad.exe), puede iniciarlas directamente con el appname.exeformato.

Para las aplicaciones que no están en la ruta (por ejemplo itunes.exe), deberá determinar la ubicación del archivo real .exe(ejecutable) e iniciarlo con la ruta completa. En realidad, esto es lo mismo que para cualquier ejecutable de Linux en Linux o cualquier ejecutable de Windows en Windows PowerShell o CMD.

Para encontrar la ruta completa a iTunes, simplemente haga clic derecho en el lnkarchivo en el Explorador y elija"Propiedades". El"Objetivo"El campo tendrá algo como C:\Program Files\iTunes\iTunes.exe.

Como se mencionó anteriormente, si estuviera intentando iniciar esto en Windows PowerShell o el intérprete CMD (los "equivalentes" de Windows bashen Linux), aún necesitaría la ruta completa, por lo que ejecutaría:

C:\Program Files\iTunes\iTunes.exe

Para iniciar esa ruta particular en bashWSL, usaría:

/mnt/c/Program\ Files/iTunes/iTunes.exe

Si necesita ayuda para convertir la ruta de Windows a la ruta de Linux, existe un comando para ello:

wslpath 'C:\Program Files\iTunes\iTunes.exe'

Para obtener información detallada sobre la interoperabilidad de Windows/WSL, consulteeste doctor.

Respuesta2

WSL puede iniciar archivos binarios de Windows de forma nativa a través de algunosinteroperabilidady el uso debinfmt_misc

LNKOTOH no es un archivo ejecutable, sino un tipo de archivo que almacena metadatos para que Windows Shell se vincule a cualquier tipo de archivo, no solo a archivos ejecutables. Como es un archivo normal, debes abrirlo con algunas aplicaciones. En cmd, la forma de abrir cualquier archivo con el programa asociado predeterminado es usarstart. Entonces, en WSL anterior puedes hacer así

cmd.exe /c start ~/Desktop/iTunes.lnk

Obviamente %Windir%\System32debe estar en su ruta (lo cual se hace de forma predeterminada) o tendrá que arreglar su entorno WSL. El equivalente en PowerShell esStart-ProcessoInvoke-Item

powershell.exe -Command Start-Process ~/Desktop/iTunes.lnk
powershell.exe -Command Invoke-Item ~/Desktop/iTunes.lnk

Para la mayoría de los tipos de archivos también puedes usar explorer.exedirectamente

explorer.exe ~/Desktop/iTunes.lnk

Sin embargo, en WSL2 tienes un nuevo comando para hacer eso.

wslview ~/Desktop/iTunes.lnk

Algunas otras soluciones comienzanwsl-abiertoyabrir

Ver


Como ejemplo, cualquiera de los siguientes comandos abrirá el directorio actual en el Explorador

explorer.exe .
wslview .
powershell.exe -Command Start-Process .
powershell.exe -C Invoke-Item .
cmd /c start .

o para abrir algunos archivos pdf

explorer.exe my.pdf
wslview my.pdf
powershell.exe -Command Start-Process my.pdf
powershell.exe -C Invoke-Item my.pdf
cmd /c start my.pdf

información relacionada