WindowsとLinuxの相互利用
ここ数回、Windows TerminalにVisual Studio Codeと、Windowsで動作するアプリケーションを取り上げた。これらはWSL(Windows Subsystem for Linux)で動作するLinuxを利用する上で便利なアプリケーションであり、今後ますます重要度は増すことになりそうだ。
WSLの大きな特徴の1つに、WindowsとLinuxのシームレスな統合がある。仮想化アプリケーションでLinuxを実行する場合と異なり、WSLではWindowsとLinuxの境界が曖昧になるような仕組みが導入されている。この仕組みは、WSL2になっても引き継がれることになっている。
今回は、WindowsとLinuxのシームレスな利用という観点から操作方法を紹介しよう。知っておくと便利だし、覚えるのも簡単な操作なのでぜひ身につけていただければと思う。
WindowsからLinuxを使う
次のスクリーンショットはWindows Terminalで動作するPowerShell 7のプレビュー版だ。Windows TerminalもPowerShell 7もどちらもプレビュー版だが、今後のWindows 10でどちらもデフォルトのアプリケーションとして使われていく可能性が高い。
この状態でLinuxのコマンドを実行しようとしても、次のようにエラーが表示される。
Windowsからはwslコマンドを使うと、Linuxのシェルを起動しなくてもコマンドを実行できる。例えば、次のスクリーンショットはPowerShell 7から「wsl neofetch」と実行して、Linux側でneofetchコマンドを実行した結果が表示されている。見た感じはPowerShell 7でneofetchというコマンドが表示されたように見える。
PowerShellはlsというエイリアスも持っている。lsはUNIX系オペレーティングシステムで代表的なコマンドだが、エイリアスはあくまでもWindowsのコマンドレットへのエイリアスだ。次のようにwslコマンドをかませると、Winodws側ではなくLinux側のlsコマンドが実行されるようになる。
wslコマンドを使うと、Linux側のコマンドの実行結果を利用しやすいという面もある。例えば、次のスクリーンショットはwsl lsでLinuxのlsコマンドの実行結果をファイルに出力し、それをメモ帳で編集するというもの。
こんな感じでLinux側でコマンドを実行して、出力結果をWindows側のアプリケーションで編集するといったようなことが、wslコマンドを使用すると簡単に実施できる。主にWindowsを利用し、時々Linuxのコマンドが実行できればよいといった場合はこの使い方が便利だ。
LinuxからWindowsを使う
実は、同じようなことは逆からもできる。まず、PowerShell 7で引数を指定せずにwslコマンドを実行すると、次のようにLinux側のインタラクティブシェルが起動してくる。
この状態で、直接Windowsのコマンドを実行することができる。Linux側からはwslコマンドをかませる必要もなく、直接Windows側のコマンドを実行できる(WSL2になると、この辺りの挙動は変わる可能性もある)。
こんな感じで、Linux側からWindowsのコマンドを実行することができる。Linuxの操作に慣れてきた、または、慣れているなら、こちらほうが便利かもしれない。
こんな感じでWSLを利用する場合、WindowsとLinuxの間のシームレスなやり取りが可能だ。特に、wslコマンドでLinux側のコマンドを実行するのは便利な機能なので覚えておいて損はないと思う。