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
これで無事に動いた。おわり