16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

wsl2になってコマンドの補完が重いと感じたらwindows側のPATHを消して必要なものだけシンボリックリンクを貼ろう

Last updated at Posted at 2020-12-21

そもそもなぜ重いのか?

私はこういう理由が一つあると考えます。

  1. wsl側からwindows側のファイルを見るのに9pを使っている。
  2. 9pは遅い
  3. Shellは補完をする時、実行権限のあるファイルを検索している。
  4. wsl側から見たwindows側のファイルはファイルシステムの違いから777に設定されている。
  5. よって、shellは遅い9pを使いながら、毎回dllなどの実行できないファイルまでも検索してくる。

よって、重い!!

wsl1ではwindows側のファイルは直接触れていて、9pを通していなかったので軽かったのだと考えられます。

ではどうすればよいのか?

検索するファイルを最小限にすれば良い。

やり方

windows側のPATHを消す

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

適当なPATHの通っているディレクトリーにwindows側のシンボリックリンクを貼る。

bash
# 適当なディレクトリを作成してパスを通した。
mkdir windows_commands
export PATH = $PATH:$HOME/windows_commands
cd ~/windows_commands

# シンボリックリンクを貼っていく
ln -s "/mnt/c/Users/morihaya/AppData/Local/Programs/Microsoft VS Code/bin/code"
# wsl側からdocker を使うなら必要
ln -s "/mnt/c/Program Files/Docker/Docker/resources/bin/docker-credential-desktop.exe"
ln -s "/mnt/c/Program Files/Mozilla Firefox/firefox.exe"

終わり

16
12
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?