そこで、最近、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 インタープリター ( bash
Linux の 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
見る
例えば、以下のコマンドのいずれかはエクスプローラーで現在のディレクトリを開きます。
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