개요
WSL에 윈도우와 동일한 개발도구를 설치할 경우, 공유되는 PATH
변수로 인하여 WSL내에서 windows의 명령어가 먼저 실행되는 경우가 있습니다. 예를 들어 윈도우 환경에 설치한 flutter 라던지
$ flutter doctor
/usr/bin/env: ‘bash\r’: No such file or directory
윈도우 환경에 설치한 node.js로 인한 오류 등입니다.
$ npm install
internal/modules/cjs/loader.js:834
throw err;
^
Error: Cannot find module 'C:\mnt\c\Program Files\nodejs\node_modules\npm\bin\npm-cli.js'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:831:15)
at Function.Module._load (internal/modules/cjs/loader.js:687:27)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
at internal/main/run_main_module.js:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
이를 해결하기 위해서 WSL에서 윈도우의 PATH
를 사용하지 않도록 설정하고자 합니다.
진단
현재 상태는 다음과 같이 PATH
환경변수의 내용을 확인하여 알 수 있습니다.
$ echo $PATH
/home/sergio/.nvm/versions/node/v14.17.5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/Eclipse Foundation/jdk-11.0.12.7-hotspot/bin:/mnt/c/windows/system32:/mnt/c/windows:/mnt/c/windows/System32/Wbem:/mnt/c/windows/System32/WindowsPowerShell/v1.0/:/mnt/c/windows/System32/OpenSSH/:/mnt/c/Users/user/AppData/Roaming/nvm:/mnt/c/Program Files/nodejs:/mnt/c/Program Files/Git/cmd:/mnt/d/flutter/bin:/mnt/c/Program Files/Eclipse Foundation/jdk-11.0.12.7-hotspot/bin:/mnt/c/Program Files/Eclipse Foundation/jdk-17.0.0.35-hotspot/bin:/mnt/c/windows/system32:/mnt/c/windows:/mnt/c/windows/System32/Wbem:/mnt/c/windows/System32/WindowsPowerShell/v1.0/:/mnt/c/windows/System32/OpenSSH/:/mnt/c/Users/user/AppData/Roaming/nvm:/mnt/c/Program Files/nodejs:/mnt/c/Program Files/Git/cmd:/mnt/d/flutter/bin:/mnt/c/Users/user/AppData/Local/Android/Sdk/tools:/mnt/c/Users/user/AppData/Local/Android/Sdk/platform-tools:/mnt/c/Users/user/AppData/Local/Programs/Microsoft VS Code/bin
윈도우에 설정된 PATH
환경변수의 값이 함께 출력되는 것을 알 수 있습니다.
조치
간단히 (관리자 권한으로) /etc/wsl.conf
파일을 생성한 후, 다음의 내용을 작성합니다.
[interop]
appendWindowsPath=false # append Windows path to $PATH variable; default is true
현재 동작중인 wsl을 중지한 후 다시 실행합니다.
> wsl --shutdown
> wsl
다음 명령을 통해 윈도우의 환경변수(PATH
)가 제거된 것을 확인 할 수 있습니다.
$ echo $PATH
/home/sergio/.nvm/versions/node/v14.17.5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
보충
만약 윈도우 명령 및 vscode와 같은 도구를 사용할 경우 다음과 쉘 환경 파일(.bashrc
, .zshrc
등)에 개별적으로 경로 설정을 추가합니다.
※ [user_name]
항목은 자신의 windows사용자 명으로 교체합니다.
$ echo export PATH=\$PATH:\"/mnt/c/WINDOWS/\" >> ~/.bashrc
$ echo export PATH=\$PATH:\"/mnt/c/Users/[user_name]/AppData/Local/Programs/Microsoft VS Code/bin\" >> ~/.bashrc
$ source ~/.bashrc
code .
참고
'개발도구 > 기타' 카테고리의 다른 글
[yarn] 전역 패키지 설치시 오류 (0) | 2021.12.16 |
---|---|
[개발도구] GIT 사용자를 위한 SVN (0) | 2021.12.13 |
[기타] zsh 설치후, nvm 동작하지 않는 오류 (0) | 2021.08.26 |
[QT] Qt에서 구글 Test 사용하기 (0) | 2021.06.19 |
[powerShell] "ssh-copy-id" 대등 명령어 (0) | 2021.06.03 |