Oh My Zsh
이번 글에서는 우분투에 zsh Configuration 프레임워크인 Oh My Zsh를 설치해보도록 하겠습니다.
커널(Kenel)과 쉘(Shell)
oh my zsh를 설치하기 전에 커널(Kernel)과 쉘(Shell)이 무엇인지 알 필요가 있습니다.
컴퓨터는 크게 물리적인 형태를 가지고 있는 하드웨어(HardWare)
와 형태는 없지만 하드웨어를 동작시키는 소프트웨어(Software)
로 구성되어 있습니다.
소프트웨어는 운영체제(Operating System, OS)
와 운영체제 위에서 동작하는 응용 소프웨어(Application Software)
로 나눌 수 있습니다.
운영체제는 하드웨어를 효율적으로 사용하기 위해 메모리나 CPU의 자원을 관리하고 여러 프로그램이 필요로 하는 공통적인 서비스를 제공하는 소프트웨어입니다. 리눅스(Linux), 윈도우(Windows), 맥OS(Mac OS)등이 운영체제에 해당합니다.
운영체제는 커널(Kenel)
과 시스템 소프트웨어(System Software)
로 구분됩니다.
커널은 운영체제의 핵심부로써, 하드웨어의 자원을 관리하는 역할을 수행합니다.
커널의 경우 컴퓨터 자원만을 바라보고 있기 때문에 사용자 또는 응용 소프트웨어와 상호작용 않습니다. 그러므로 커널과 상호작용하기 위한 인터페이스가 필요한데, 이때 사용하는 시스템 소프트웨어가 쉘(Shell)
입니다.
윈도우 운영체제에서는 명령 프롬프트(Command Prompt)
가 쉘에 해당합니다.
zsh와 Oh My Zsh
리눅스는 표준 쉘로써 bash
를 사용합니다. BASH는 Bourne-again shell
의 약자로, 유닉스의 오리지날 쉘인 sh(Bourne Shell)
을 기반으로 만들어졌습니다. 대표적인 리눅스 기반 GNU 운영체제인 우분투(Ubuntu) 역시 bash를 사용합니다.
zsh
는 bash, ksh, tcsh의 일부 기능을 포함하여 수많은 개선 사항이 갖추어진 확장형 sh입니다. Mac OS 10.15 버전인 카탈리나부터는 기본 쉘로 zsh를 사용합니다.
zsh는 커스텀이 비교적 자유로우며, 각종 테마나 플러그인의 추가/삭제가 가능합니다. 또한 경로를 자동으로 추론하거나 타이핑 교정, 명령어 추천 등 많은 기능을 포함합니다.
경로 자동추론
/h/u/ws
를 입력후 TAB
키를 누르면 가장 비슷한 경로를 추론하여 자동완성됩니다.
타이핑 교정
commit를 cmmit로 잘못입력했다면 이를 교정하여 commit를 입력할 것을 추천합니다.
명령어 추천
git c
를 입력후 TAB
키를 누르면 c로 시작하는 명령어 옵션을 추천해줍니다.
Oh My Zsh
는 zsh의 이러한 환경설정을 다루기위한 프레임워크입니다. 프레임워크 없는 zsh는 빈 껍데기에 불과하다고 보면 됩니다.
공식 홈페이지에 적힌 설명에 따르면 oh-my-zsh를 사용하면 카페에서 낮선 사람들이 다가와 "대단해! 너 천재야?"
라고 묻는다고 합니다 :)
본격적으로 맥의 감성을 우분투에 반영해보겟습니다.
Oh My Zsh 설치
zsh 설치
우선 zsh
를 설치해야합니다. apt를 통해 zsh를 설치해주도록 합시다.
zsh 설치
$ sudo apt install zsh
oh my zsh 설치
다음으로 oh-my-zsh
를 설치해주도록 합시다. curl이나 wget을 통해 sh 스크립트 파일을 다운받고 실행시키면 됩니다.
curl을 통한 설치
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
wget을 통한 설치
$ sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
설치가 완료되면 zsh를 기본 쉘로 변경할 것인지 묻는데, y를 입력하면 터미널이 실행될 때 기본쉘로 zsh를 사용합니다.
테마 설정
이제 테마를 설정하겠습니다. 테마는 .zshrc
파일에서 ZSH_THEME
를 설정하여 변경할 수 있습니다.
vi 또는 nano 에디터를 통해 해당 파일을 편집합니다.
.zshrc 파일 편집
$ sudo nano ~/.zshrc
ZSH_THEME가 robbyrussell
로 입력되어 있습니다. 이 부분에 사용하고 싶은 테마를 입력하면 됩니다.
저는 국룰(?)인 agnoster
테마를 사용하도록 하겠습니다.
CTRL + O
를 눌러 저장하고 CTRL + X
를 눌러 nano 에디터를 빠져나옵니다.
설정된 테마를 적용하기 위해 .zshrc를 소싱합니다.
.zshrc 소싱
$ source ~/.zshrc
해당 테마를 사용할 경우 폰트가 깨지는 문제가 발생할 수 있으므로, 이를 해결하기 위해 powerline 폰트를 설치합니다.
powerline 폰트 설치
$ sudo apt install fonts-powerline
다른 테마는 아래 페이지에서 확인이 가능합니다.
플러그인 설치
syntax hightlight
syntax hightlight
는 말그대로 구문을 강조하는 플러그인 입니다.
GITHUB: https://github.com/zsh-users/zsh-syntax-highlighting
bash의 경우 명령어와 옵션을 구분하지 않고 모두 흰색으로 입력됩니다.
bash의 경우
zsh에 해당 플러그인을 설치한다면 구문이 강조되어 사용할 수 있는 명령어는 녹색으로, 사용할 수 없는 명령어는 빨간색으로, 옵션은 흰색으로 입력됩니다.
사용할 수 있는 명령어의 경우
사용할 수 없는 명령어의 경우
oh-my-zsh에서 플러그인을 사용하기 위해서는 ~/.oh-my-zsh/custom/plugins
폴더에 플러그인을 다운받고 .zshrc 파일에서 plugins
를 설정하면 됩니다.
우선 git를 통해 플러그인을 다운로드 받겠습니다. (git가 설치되어 있음을 전제로 합니다.)
syntax hightlight 플러그인 다운로드
$ git clone https://github.com/zsh-users/zsh-syntax-hightlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
vi 또는 nano 에디터를 통해 .zshrc 파일을 편집합니다.
.zshrc 파일 편집
$ sudo nano ~/.zshrc
처음에 plgins에 (git)
가 설정되어 있습니다. 여기에 구분자를 스페이스로 하여 zsh-syntax-hightlight
를 추가해주도록 합시다.
CTRL + O
를 눌러 저장하고 CTRL + X
를 눌러 nano 에디터를 빠져나옵니다.
.zshrc를 소싱하면 플러그인이 바로 적용됩니다.
.zshrc 소싱
$ source ~/.zshrc
autosuggestions
autosuggestions
는 히스토리 기반으로 최근에 입력한 명령어를 미리보기 형태로 보여주는 플러그인 입니다.
autosuggestions 플러그인 적용
플러그인을 적용하기 위해서는 syntax highlighte 플러그인을 적용한 방식 그대로 설정하면 됩니다.
autosuggestions 플러그인 다운로드
$ git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
vi 또는 nano 에디터를 통해 .zshrc 파일을 편집합니다.
.zshrc 파일 편집
.zshrc를 소싱하면 플러그인이 바로 적용됩니다.
.zshrc 소싱
$ source ~/.zshrc