wsl2でzshなどのコマンド補間がやたら遅い対策

概要

wsl2を立ち上げると、PATHにホストであるwindowsのPATHが追加されてしまう。
windowsのファイルはすべて実行権限がついているとみなされてしまうため、PATH上のファイルがすべてコマンド補間対象に出てしまう。
なので遅い。

対策

  • PATHをいじる

PATHを無理やりうわがいてしまう。ただ意図しない上書きまでしちゃいそうでいや。 最初はこうしてた。

  • wsl.confを設定する

https://roy-n-roy.github.io/Windows/WSL%EF%BC%86%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A/wslconfig/

こう。

/etc/wsl.conf
[interop]
appendWindowsPath = false

これで追加されない。 この設定後、Powershellを管理者権限で起動して、

PS C:\WINDOWS\system32> Restart-Service LxssManager

を実行してあげる必要がある。実行しないと反映されないので注意。

https://github.com/Microsoft/WSL/issues/1493#issuecomment-580643734

windows側のコマンドを叩きたい場合

reactなんかで npm start を打つとwslからでもchromeをいい感じに立ち上げてくれるんだけど、ここらへんはcmd.exeから呼び出している。
なので、c:\\Windows\System32 にパスが通ってないとnpm startでエラーがでる。
こんなふうに極稀にwindowsのコマンドを実行したいときは、シンボリックリンクを貼っておくと良さそう。

$ sudo ln -s /mnt/c/Windows/System32/cmd.exe /usr/local/bin/cmd.exe

これで無事に動いた。おわり