WSL1とWSL2の決定的な違いは、WSL2はLinuxが仮想マシン上で動くという点に尽きる。
localhost問題
WSL2になって問題となったのがlocalhost問題。
仮想マシンとして別マシンで動くので当然別IPが割り振られる。
WSL2で苦労していた点は一年前にこの記事で書いている。
https://qiita.com/yugo-yamamoto/items/ac31bbd00f6b88e05793
とにかく最後までネックになってたのは、GUIつきChromeが自動化できないという点だったが、それもWindows11+WSLgで本物Chromeが動くので解消。普段使いのChromeが自動化できないという点はマイナスだが、仮想マシン上に入れたChromeもGoogleアカウントでログインしてしまえば、ブックマークも履歴も機能拡張だって共有できる。
以下一見WSL2ではできなさそうだけど、WSL1と同様に動かせる機能。
portforward
WSL1上でsshのポートフォワードを起動しておいて、Chromeからlocalhost:4567
と接続する機会はよくあった。WindowsからのlocalhostはWLS2の何かしらのListenしているポートにアクセスできるのでこれは機能する。
現在のフォルダをWindowsから開く
root@LAPTOP-5EMLK46H:/mnt/c/Users/yugoy/Downloads# explorer.exe .
「コマンドプロンプト代わりにWSLを使う」というタイプの人達にはよくやる操作。
WSL2もWindowsのコマンドは直に呼び出せるのでこれでフォルダを開くことはできる。
Windows側のデフォルトブラウザでURLを開く
exploler.exe http://yahoo.co.jp
これで標準ブラウザから開くことができる。Macで言うopenに近い操作がexplorler.exeの起動で可能になる。localhostを経由したWindowアクセスがWSL2からは不可能ではあるものの、Windows上のコマンドはすべて利用可能。
Window側のclipboardとやり取りする
Macで言うpbcopy,pbpasteをWSL2上の仮想マシンから操作する。
clip.exeはWSL2からも操作可能。
echo aa | clip.exe
このようなコマンドで、標準出力をWindows側のclipboardに入れるこは可能。clipboardから取り出すコマンドは直接ないためPowerShellを経由する必要がある。
powershell.exe Get-Clipboard
ということで、「だいたい」Windows側の機能も使えたということで、WSL1はもはや必要なくなった。あとこの1年でWSL2がめちゃくちゃ進化した。まだ進化しそう。