Итак, недавно я загрузил установку 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 в bash
Linux), вам все равно понадобится полный путь, поэтому вы должны выполнить:
C:\Program Files\iTunes\iTunes.exe
Чтобы запустить этот конкретный путь в bash
WSL, вам нужно использовать:
/mnt/c/Program\ Files/iTunes/iTunes.exe
Если вам нужна помощь в преобразовании пути Windows в путь Linux, для этого есть команда:
wslpath 'C:\Program Files\iTunes\iTunes.exe'
Подробную информацию о взаимодействии Windows/WSL см.этот документ.
решение2
WSL может запускать двоичные файлы Windows напрямую через некоторыевзаимодействиеи использованиеbinfmt_misc
LNK
OTOH — это не исполняемый файл, а разновидность файла, в котором хранятся метаданные для 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