Можно ли открывать приложения Windows изнутри подсистемы Windows для терминала Linux?

Можно ли открывать приложения Windows изнутри подсистемы Windows для терминала Linux?

Итак, недавно я загрузил установку Ubuntu Linux для Windows, так как хотел научиться использовать оболочку bash. Пока что мне это нравится, но интересно, есть ли способ сделать то же самое? Допустим, у меня на компьютере установлен iTunes, и я хочу открыть его из терминала Linux. Возможно ли это? Я пробовал перейти в папку рабочего стола в терминале и открыть файлы .lnk, но он просто выдает мне сообщение «невозможно выполнить двоичный файл: ошибка формата Exec». Кто-нибудь знает, возможно ли это?

решение1

Да, WSL поддерживает запуск приложений Windowsисполняемые файлы(например, iTunes) из оболочки. Однако, как было упомянуто в комментариях, lnkфайлынетподдерживаются, так как они неисполняемые файлы. Они естьссылкик исполняемым файлам.

WSL также достаточно хорош, чтобы (по умолчанию) добавить ваш путь Windows к вашему пути Linux. Так что для приложений, которые находятся в пути (например, notepad.exe), вы можете просто запустить их напрямую с appname.exeформатом.

Для приложений, которые не находятся в пути (например, itunes.exe), вам нужно будет определить местоположение фактического .exe(исполняемого) файла и запустить его с полным путем. Это на самом деле то же самое, что и для любого исполняемого файла Linux под Linux или любого исполняемого файла Windows под Windows PowerShell или CMD.

Чтобы найти полный путь к iTunes, просто щелкните правой кнопкой мыши по lnkфайлу в Проводнике и выберите"Характеристики"."Цель"поле будет иметь что-то вроде C:\Program Files\iTunes\iTunes.exe.

Как упоминалось ранее, если вы попытаетесь запустить это в Windows PowerShell или интерпретаторе CMD («эквиваленты» Windows в bashLinux), вам все равно понадобится полный путь, поэтому вы должны выполнить:

C:\Program Files\iTunes\iTunes.exe

Чтобы запустить этот конкретный путь в bashWSL, вам нужно использовать:

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

Если вам нужна помощь в преобразовании пути Windows в путь Linux, для этого есть команда:

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

Подробную информацию о взаимодействии Windows/WSL см.этот документ.

решение2

WSL может запускать двоичные файлы Windows напрямую через некоторыевзаимодействиеи использованиеbinfmt_misc

LNKOTOH — это не исполняемый файл, а разновидность файла, в котором хранятся метаданные для Windows Shell, чтобы ссылаться на любые файлы, не только исполняемые. Поскольку это обычный файл, вам нужно открыть его некоторыми приложениями. В cmd способ открыть любой файл с помощью ассоциированной программы по умолчанию — использоватьstart. Так что в старых WSL вы можете сделать так

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

Очевидно, %Windir%\System32что он должен быть в вашем пути (что делается по умолчанию), или вам придется исправить вашу среду WSL. Эквивалент в PowerShell —Start-ProcessилиInvoke-Item

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

Для большинства типов файлов вы также можете использовать explorer.exeнапрямую

explorer.exe ~/Desktop/iTunes.lnk

Однако в WSL2 у вас есть новая команда, позволяющая это сделать.

wslview ~/Desktop/iTunes.lnk

Некоторые другие решения начинаютсяwsl-открытыйиеопен

Видеть


Например, любая из приведенных ниже команд откроет текущий каталог в Проводнике.

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

или открыть некоторые файлы 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

Связанный контент