Linux ターミナルの Windows サブシステム内から Windows アプリケーションを開くことは可能ですか?

Linux ターミナルの Windows サブシステム内から Windows アプリケーションを開くことは可能ですか?

そこで、最近、bash シェルの使い方を知りたかったので、Windows 用の Linux の Ubuntu インストールをダウンロードしました。これまでは楽しんで使っていますが、上記のようなことができる方法があるかどうか疑問に思っています。たとえば、コンピューターに iTunes がインストールされていて、Linux ターミナルから開きたいとします。これは可能ですか? ターミナルでデスクトップ フォルダーに移動して .lnk ファイルを開こうとしましたが、「バイナリ ファイルを実行できません: Exec 形式エラー」というメッセージが表示されます。これが可能かどうか知っている人はいますか?

答え1

はい、WSLはWindowsアプリケーションの起動をサポートしています実行ファイル(iTunesなど)をシェル内から実行することはできません。ただし、コメントで述べたように、lnkファイルはないサポートされていないため実行ファイル。 彼らですリンク実行可能ファイルに。

WSL は、(デフォルトで) Windows パスを Linux パスに追加してくれるので便利です。そのため、パス内にあるアプリケーション (例notepad.exe) は、 という形式で直接起動できますappname.exe

パスにないアプリ (例itunes.exe) の場合は、実際の (実行可能ファイル) の場所を特定.exeし、フルパスで起動する必要があります。これは、Linux の Linux 実行可能ファイルや、Windows PowerShell または CMD の Windows 実行可能ファイルの場合とまったく同じです。

iTunesへのフルパスを見つけるには、lnkエクスプローラーでファイルを右クリックして、"プロパティ""目標"フィールドには のような内容が表示されますC:\Program Files\iTunes\iTunes.exe

前述のように、これを Windows PowerShell または CMD インタープリター ( bashLinux の Windows 版) で起動しようとする場合は、完全なパスが必要なので、次のコマンドを実行します。

C:\Program Files\iTunes\iTunes.exe

WSL で特定のパスを起動するにはbash、次を使用します。

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

Windows パスを Linux パスに変換するのにヘルプが必要な場合は、そのためのコマンドがあります:

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

Windows/WSL相互運用性の詳細については、以下を参照してください。このドキュメント

答え2

WSLはいくつかの方法でWindowsバイナリをネイティブに起動できる相互運用およびの使用binfmt_その他

LNK一方、実行ファイルではなく、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

関連情報