[Windows] WSL, Windows Subsystem for Linux
- 개요
- 설치
- 이전 설치 방법
- 서브 시스템의 실제 경로
- WSL에서 호스트 디렉터리 접근
- CMD 혹은 파워셸에서 Linux 명령어 실행
- 우분투 터미널 꾸미기: Zsh, Powerlevel10k, ls color
- WSL용 쉘 사용자 정의 설정 모음
- WSL에서 윈도우의 환경 변수 사용하지 않기
- WSL에서 Git Credential Manager for Windows 사용하기
- WSL 기본 로그인 유저 바꾸기
참고 문서
개요
WSL은 가상 머신 등의 설정 없이 윈도우 상에서 리눅스 명령어를 직접 실행할 수 있는 환경을 말한다. 2020년엔 버전업 된 WSL 2가 나왔다.
설치
이제 그냥 요거 한 방으로 됨:
# 기본 OS인 Ubuntu로 wsl 설치
wsl --install
# 설치 된 wsl 목록(도커 포함)과 버전 확인
wsl -l -v
버전 확인해서 2가 아니면 뭔가 잘못된 거니까 가이드 보고 다시 설치하자.
그 다음 새로 생성된 Ubuntu 앱 바로가기를 누르던지, 아니면 파워셸이나 CMD에서 wsl
을 치면 WSL 터미널로 진입한다.
이전 설치 방법
설치 방법은 우선 'Linux용 Windows 하위 시스템' 옵션 기능을 사용하도록 설정하고:
# PowerShell 관리자 권한으로 실행, 재시작 필요
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 예전 버전의 도움말에선 이렇게 알랴줌
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
그 다음, WSL 2를 쓸 생각이 없다면 바로 서브 시스템을 설치하면 된다. 요것 혹은 요놈을 눌러 나오는 앱 중 하나를 골라 설치하거나,
아니면 파워셸에서 직접:
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing
명령어로 다운로드/설치 하면 됨
오늘(2021-01-20) 확인해보니 설치가 제대로 안 되며, 도움말에서도 셸 명령어로 설치하라는 내용은 사라짐. 되는 방법 찾기 귀찮으니 그냥 스토어 가서 까세영. 😒
서브 시스템의 실제 경로
WSL1: 루트의 실제 경로는 설치한 서브 시스템별로 다르지만, 공통적으로 %USERPROFILE%\AppData\Local\Packages
까지는 같고 \LocalState\rootfs
로 끝난다.
예를 들어 우분투는 C:\Users\norit\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
요렇게 됨.
WSL2: 버전 2에선 셸에서 powershell.exe /c start .
을 입력하면 해당하는 경로로 윈도우 탐색기가 열린다. 혹은 실행 대화 상자나 탐색기에서 \\wsl.localhost
혹은 \\wsl$
을 입력하면 OS별 루트 경로에 바로 접근할 수 있다.
WSL에서 호스트 디렉터리 접근
우분투 말고는 설치를 안해봐서 정확하진 않으나 /mnt
아래에 있는 드라이브들이 호스트(WSL이 설치된 윈도우의 루트 경로) 디렉터리다.
$ df -h
Filesystem Size Used Avail Use% Mounted on
...
drvfs 476G 100G 377G 21% /mnt/c
drvfs 930G 69G 862G 8% /mnt/d
CMD 혹은 파워셸에서 Linux 명령어 실행
wsl ls -la
dir | wsl grep git
리눅스 명령어 앞에 wsl
을 붙이면 된다.
우분투 터미널 꾸미기: Zsh, Powerlevel10k, ls color
Zsh는 리눅스 기본 셸인 Bash의 확장 버전이고, Powerlevel10k은 테마 같은거다.
일단 Zsh는:
# zsh 설치
apt install zsh
# oh-my-zsh 설치
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# zsh 실행
zsh
# bash로 돌아가기
bash
그리고 Powerlevel10k는 일단 폰트를 받고, 우분투의 폰트 설정을 변경한다.
윈도우 터미널의 경우 설정에서 우분투의 폰트를 변경하거나 settings.json
의 우분투 프로파일에 "font": { "face": "MesloLGS NF" }
를 추가하면 된다.
PowerLevel10k 설치는 아래 명령으로:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
깃 소스를 받은 다음 ~/.zshrc
파일에 ZSH_THEME="powerlevel10k/powerlevel10k"
설정.
터미널 재실행하면 자동으로 powerlevel10k 환경설정을 시작한다. 나중에 다시 바꾸려면 p10k configure
.
마지막으로 ls color는 아래 실행:
echo 'LS_COLORS="ow=01;36;40" && export LS_COLORS' >> ~/.zshrc
하면 끗.
기본 셸 Zsh로 변경하려면 아래 실행:
# 로그인 셸을 Zsh로 바꾸기
chsh -s $(which zsh)
작성자 저장용 PowerLevel10k 환경설정
어디에 붙은건지 헷갈림을 방지하기 위해 Prompt Style은 아래처럼 한다:
- WSL은
(3) Rainbow.
- 원격 서버의 일반 유저는
(2) Classic.
- 원격 서버의 루트 유저는
(1) Lean.
- Docker에선 이상하게 선택 불가하고
(4) Pure.
로 고정됨.
WSL용 쉘 사용자 정의 설정 모음
# .bashrc 또는 .zshrc 파일에 추가
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias sb='/mnt/c/Program\ Files/Sublime\ Text/subl.exe'
alias adb='adb.exe'
WSL에서 윈도우의 환경 변수 사용하지 않기
https://stackoverflow.com/questions/51336147/how-to-remove-the-win10s-path-from-wsl
WSL에서 윈도우의 환경 변수를 사용하지 않는 방법이다.
루트 계정으로 전환해서 /etc/wsl.conf
파일을 만들고 아래처럼 작성한다:
[interop]
appendWindowsPath=false
그리고 WSL 재시작:
wsl --shutdown
그래도 안 되면 여기를 보자.
WSL에서 Git Credential Manager for Windows 사용하기
윈도우 환경에서는 기본값으로 '자격 증명 관리자'를 사용하는데, 이걸 변경하는 것.
WSL 터미널에서 아래를 입력하면 된다:
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager-core.exe"
WSL 기본 로그인 유저 바꾸기
우분투인 경우:
ubuntu config --default-user 유저_아이디
비밀번호를 잊어버려 재설정 할 때 쓴다.