Windows: Z Shell

WSL2, Oh My ZSH, powerlevel10k

Kang Min Kim
CodeAlpha
8 min readSep 20, 2020

--

docker command can’t use in WSL1

windows10 Enterprise 에서 WSL로 ubuntu를 설치해 사용하던 중 docker-machine을 사용할 일이 생겼다. 서비스를 종료 및 삭제할 때 자동완성을 사용하고 싶은데 PS에서 사용하긴 싫고, ubuntu 에서 사용하고 싶어서 알아 보던 도중 docker 공식홈에서 zsh 의 서드파티 플러그인 으로 Oh My Zsh 을 이용하면 이것이 가능하단 것을 알게되어 이번기회에 사용해보고자 한다.

What is Z Shell?💻

ZShell 은 유닉스의 기본 쉘인 Bourne shell 에서 확장된 것으로 bash shell 에서 확장된 기능뿐만 아니라 사용자 편의를 위한 다양한 테마와 플러그인을 제공한다.

✔️단일버퍼에서 여러명령 편집
✔️강력한 file globbing 기능
✔️실행하고 있는 shell 간의 커맨드 히스토리 공유 등..

그럼 이제 설치를 시작해보자.

Update Windows 10

먼저 window key + Rwinver 을 입력해서 자신의 빌드 버전을 확인하자.

winver

MS공식 문서에 따르면 WSL2을 사용하기 위해서는 ARM64 아키텍쳐 기준 윈도우 Build19041 이상 버전은 2004 이상 이어야 한다. 자신의 Build 버전이 18362 보다 낮은경우는 Windows Update Assistant를 사용해서 업데이트 해야 하는데 필자의 경우가 이에 해당하였고 업데이트하는데 2시간 이상 소요 된것 같다.

Enable VMF☑️ & Subsystem for Linux

WSL2를 사용하기 위해선 Virtual Machine Platform 과 Windows Subsystem for Linux 를 활성화해야 한다.

Virtual machine Platform
Windows Subsystem for Linux

활성화 하지 않고 우분투를 설치 했을 경우 아래와 같은 에러가 뜬다.

Install Ubuntu from Microsoft Store

윈도우 apps 에서 Microsoft Store 를 실행해 Ubuntu 를 검색하고 원하는 버전의 우분투를 설치한다.

설치 완료 후 Ubuntu를 실행하여 초기화 설정을 완료 하도록 한다.

WSL default version set to 2

자신의 리눅스 배포판에 맞게 wsl의 기본버전을 2로 변경해주자 필자의 경우 Ubuntu를 사용하므로 wsl --set-version Ubuntu 2 를 입력 하였다.

WSL2 리눅스 커널의 업데이트를 진행해주어야 한다.
WSL Linux kernel update package for x64 machines

정상적으로 변환이 완료되었다.

Install ZSH

Ubuntu를 실행한뒤 zsh를 설치하고 기본쉘을 zsh 로 변경한다

Ubuntu 를 재실행 하면 zsh 로 시작되나 폰트가 깨져보인다.

zsh 는 glyphs 를 사용하므로 제대로 폰트를 렌더링 하기 위해선 추가 폰트 설치가 필요한데 ryanoasisnerd-font 를 설치해야한다. 마크다운 문서에서 Patched Fonts 를 보고 윈도우시스템을 지원한는 적당한 폰트를 설치하자 필자는 DejaVuSansMono 폰트를 설치하였다. 그리고 Ubuntu 창의 속성에서 폰트를 변경해주자.

또 다른 폰트로는 Powerline fonts 의 폰트도 사용 가능하다. 주의 해야할점은 우리는 윈도우 환경의 WSL 에서 설치를 진행하고 있기때문에 ps1 파일로 설치를 진행해야한다. 실행정책관련 하여 에러가 뜬다면 임시로 Bypass 옵션으로 진행하였다가 다시 Default로 복구해주자.

원하는 폰트를 적용하면 아래와 같이 화살표 모양의 prompt 가 나온다.

Oh My Zsh & powerlevel10k theme ‍🎨

oh-my-zsh 를 설치하고 테마를 변경해보자

Powerlevel10k 이라는 테마를 설치한다.

설치 후 ~/.zshrc 파일의 ZSH_THEME 를 아래와 같이 변경한다.

source ~/.zshrc 로 쉘을 리로드 하면 configuration 이 시작된다 원하는 스타일을 고르면서 진행하면 된다.

powerlevel10k configuration

설정을 변경하고 싶다면 p10k configure 커맨드를 사용하자.

Visual Studio code

vs code 에서 터미널을 열고 기본 쉘을 wsl 로 지정하자 ls -al 커맨드로 파일들의 리스트를 출력해보면 디렉토리의 컬러 스킴이 block 으로 나타나는 것을 알 수 있다.

이를 보기 좋기 만들기 위해 Solarized Color Theme 를 사용해보자. 필자는 dircolors.ansi-dark 를 사용하였다. Raw 버튼을 클릭하고 curl 커맨드를 통해 home 폴더로 가져온다.

~/.zshrc 파일하단에 아래 커맨드를 추가하고 변경된 컬러를 확인한다.

docker & docker-compose plugin 🐋

이제 docker, docker-compose, docker-machine 플러그인을 활성화 하고 자동완성 기능을 사용해보자. 그전에 Docker Desktop App 의 Settings 에서 Use the WSL 2 based engine 을 활성화 시켜야한다.

Use the WSL 2 based engine

WSL2 로 업데이트 하고 Docker Desktop 을 실행하면 자동으로 설치를 감지해 Hyper-V 대신 WSL2로 변경하겠냐는 팝업창이 뜨지만 설명을 위해 위 화면을 캡쳐하였다.

추가로 어떤 WSL2 배포판을 기본값을 선택하여 통합할것인지 선택할 수 있는데 Resources 를 클릭하면 현재 시스템에 설치된 WSL 목록을 확인할 수 있다. 필자는 Ubuntu 뿐이므로 굳이 활성화 하지는 않았다.

Ubuntu WSL2 에 Docker Machine 도 설치해주도록 하자. ~/.zshrc 파일의plugins 항목에 docker-composedocker-machine 을 추가해주고 리로드 하면 WSL2 에서 도커의 기능을 사용하기 위한 모든 준비가 끝난다.

기본적인 zsh 의 기능으로 위와 같이 tab 을 사용하여 커맨드의 자동완성이 가능하다! 이외 에도 zsh 는 강력한 기능들을 다수 가지고 있는데 zsh 시리즈를 작성할때 다루어 보도록 하겠다.

--

--