PR

Windows⇔Linuxでアプリ起動

 Linux側からWindowsアプリを実行できます。例えば次のコマンドを実行するとWindowsアプリの「メモ帳」が起動します。


$ notepad.exe

 このように、Windowsアプリを実行するには拡張子「.exe」も含めて指定します。LinuxのPATH環境変数には、「/mnt/c/Windows」「/mnt/c/Windows/System32」などのWindowsのパスが自動的に追加されているので、「C:¥Windows¥System32」にある「notepad.exe」を実行できるわけです。

 デフォルトのパスにないアプリケーションを実行したいときは、「/mnt/c」で始まるフルパスを指定するか、そのパスをPATH環境変数に追記するかします。

 逆に、WindowsのPowerShellやコマンドプロンプトから、Linuxのコマンドを実行することもできます。あらかじめ実行したいスクリプトを作成しておいて、「ubuntu.exe」「opensuse-42.exe」「sles-12.exe」などインストール済みのLinuxディストリビューションを起動するWindowsコマンドに渡すことで、そのスクリプトを実行できます。

 アプリケーション間のパイプも使えるので、Windowsコマンド、PowerShellコマンドレット、Linuxコマンドを問わず、使いやすいテキスト処理ユーティリティーを組み合わせることができます。例えば、Windowsのコマンドプロンプトで次のように実行すると、「C:¥Windows」フォルダーにある「Win」という文字列を含むファイルやフォルダーの一覧を取得できます。


> ubuntu -c "ls -l /mnt/c/Windows" | findstr Win

 Linux側で次のように実行しても同じ結果が得られます。


$ cmd.exe /C "dir c:\Windows" | grep Win
「C:¥Windows」フォルダーにある「Win」という文字列を含むファイルやフォルダーを一覧表示するコマンドを実行した結果
「C:¥Windows」フォルダーにある「Win」という文字列を含むファイルやフォルダーを一覧表示するコマンドを実行した結果
上がUbuntuでの実行結果、下がWindowsでの実行結果。
[画像のクリックで拡大表示]

 これをうまく活用すれば、Windows側の操作をLinuxのスクリプトで自動化できます。

 双方のアプリを連携させるときも、前述したファイルシステムの違いから、ファイルの取り扱いには注意が必要です。例えば、「/mnt/c/Users/ユーザー名」ディレクトリーに作成したテキストファイル「hello.txt」は、Windowsアプリのメモ帳で開くことができます。


$ cd /mnt/c/ユーザー名
$ echo "こんにちは" > hello.txt
$ notepad.exe hello.txt
「/mnt/c」ディレクトリー以下に作成したテキストファイルをメモ帳で起動
「/mnt/c」ディレクトリー以下に作成したテキストファイルをメモ帳で起動
[画像のクリックで拡大表示]

 ただし、このコマンドはDrvFsのディレクトリーでしか動作しません。VolFsのディレクトリーに作成したテキストファイルは、メモ帳では開けません。

Linux上に作成したテキストファイルはメモ帳で表示できない
Linux上に作成したテキストファイルはメモ帳で表示できない
[画像のクリックで拡大表示]