wsl bash completion is too slow

# wsl(windows subsystem for linux) 의 bash 탭으로 파일 자동 완성을 시도하면 너무 오래걸리는 문제가 있다.
bash ./a탭... 한참 후 파일 자동완성

# 터미널을 하나 더 열어 이전 터미널의 bash 탭 동작의 system call 을 살펴보면
# /mnt/c/windows 경로들의 수많은 파일들을 찾고 있는 것을 볼 수 있다.
strace -p 이전터미널pid

# path 환경변수 설정에 /mnt/c/windows 경로가 포함되어 있는 것이 문제였다.
echo $PATH
/mnt/c/Program Files/Intel/iCLS Client/:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/
...

# path 에서 /mnt/c/windows... 경로들을 빼고 재설정하면 빠르게 자동완성 된다.

# 이 이슈가 등록되어 있고,
# 배포판(ubuntu 등)의 /etc/wsl.conf 파일을 생성하고 다음 옵션값을 설정하면
# /mnt/c/window 등 윈도우 경로들이 추가되지 않는다.
sudo vi /etc/wsl.conf
[interop]
appendWindowsPath=false

# cmd -> wsl 배포판 상태를 확인
C:\Users\Administrator>wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-18.04    Running         2

# 배포판을 terminate 시킨다.
C:\Users\Administrator>wsl -t ubuntu-18.04

# 이제 wsl 배포판(ubuntu)를 다시 시작하면
# path 환경변수에서 윈도우 경로가 빠져있고 bash 자동완성이 빠르게 동작한다.

# appendWindowsPath=false 옵션으로 윈도우 관련 경로들이 제외됐기 때문에
# wsl 에서 vscode 를 code . 실행을 위해선 아래 경로를 추가해야 한다.

comments:

댓글 쓰기