/ #기타

Oh My Zsh

이번 글에서는 우분투에 zsh Configuration 프레임워크인 Oh My Zsh를 설치해보도록 하겠습니다.

커널(Kenel)과 쉘(Shell)

oh my zsh를 설치하기 전에 커널(Kernel)과 쉘(Shell)이 무엇인지 알 필요가 있습니다.

img001

컴퓨터는 크게 물리적인 형태를 가지고 있는 하드웨어(HardWare)와 형태는 없지만 하드웨어를 동작시키는 소프트웨어(Software)로 구성되어 있습니다.

소프트웨어는 운영체제(Operating System, OS)와 운영체제 위에서 동작하는 응용 소프웨어(Application Software)로 나눌 수 있습니다.

운영체제는 하드웨어를 효율적으로 사용하기 위해 메모리나 CPU의 자원을 관리하고 여러 프로그램이 필요로 하는 공통적인 서비스를 제공하는 소프트웨어입니다. 리눅스(Linux), 윈도우(Windows), 맥OS(Mac OS)등이 운영체제에 해당합니다.

운영체제는 커널(Kenel)시스템 소프트웨어(System Software)로 구분됩니다.

커널은 운영체제의 핵심부로써, 하드웨어의 자원을 관리하는 역할을 수행합니다.

커널의 경우 컴퓨터 자원만을 바라보고 있기 때문에 사용자 또는 응용 소프트웨어와 상호작용 않습니다. 그러므로 커널과 상호작용하기 위한 인터페이스가 필요한데, 이때 사용하는 시스템 소프트웨어가 쉘(Shell) 입니다.

img002

윈도우 운영체제에서는 명령 프롬프트(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는 커스텀이 비교적 자유로우며, 각종 테마나 플러그인의 추가/삭제가 가능합니다. 또한 경로를 자동으로 추론하거나 타이핑 교정, 명령어 추천 등 많은 기능을 포함합니다.

경로 자동추론

img003

/h/u/ws를 입력후 TAB키를 누르면 가장 비슷한 경로를 추론하여 자동완성됩니다.


타이핑 교정

img004

commit를 cmmit로 잘못입력했다면 이를 교정하여 commit를 입력할 것을 추천합니다.


명령어 추천

img005

git c를 입력후 TAB키를 누르면 c로 시작하는 명령어 옵션을 추천해줍니다.


Oh My Zsh는 zsh의 이러한 환경설정을 다루기위한 프레임워크입니다. 프레임워크 없는 zsh는 빈 껍데기에 불과하다고 보면 됩니다.

공식 홈페이지에 적힌 설명에 따르면 oh-my-zsh를 사용하면 카페에서 낮선 사람들이 다가와 "대단해! 너 천재야?"라고 묻는다고 합니다 :)

본격적으로 맥의 감성을 우분투에 반영해보겟습니다.

Oh My Zsh 설치

zsh 설치

우선 zsh를 설치해야합니다. apt를 통해 zsh를 설치해주도록 합시다.

zsh 설치
$ sudo apt install zsh

img006

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를 사용합니다.

img007

테마 설정

이제 테마를 설정하겠습니다. 테마는 .zshrc 파일에서 ZSH_THEME를 설정하여 변경할 수 있습니다.

vi 또는 nano 에디터를 통해 해당 파일을 편집합니다.

.zshrc 파일 편집
$ sudo nano ~/.zshrc

ZSH_THEME가 robbyrussell로 입력되어 있습니다. 이 부분에 사용하고 싶은 테마를 입력하면 됩니다.

저는 국룰(?)인 agnoster 테마를 사용하도록 하겠습니다.

img008

CTRL + O를 눌러 저장하고 CTRL + X를 눌러 nano 에디터를 빠져나옵니다.

설정된 테마를 적용하기 위해 .zshrc를 소싱합니다.

.zshrc 소싱
$ source ~/.zshrc

img009

해당 테마를 사용할 경우 폰트가 깨지는 문제가 발생할 수 있으므로, 이를 해결하기 위해 powerline 폰트를 설치합니다.

powerline 폰트 설치
$ sudo apt install fonts-powerline

img010

다른 테마는 아래 페이지에서 확인이 가능합니다.

https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

플러그인 설치

syntax hightlight

syntax hightlight는 말그대로 구문을 강조하는 플러그인 입니다.

GITHUB: https://github.com/zsh-users/zsh-syntax-highlighting

bash의 경우 명령어와 옵션을 구분하지 않고 모두 흰색으로 입력됩니다.

bash의 경우

img017

zsh에 해당 플러그인을 설치한다면 구문이 강조되어 사용할 수 있는 명령어는 녹색으로, 사용할 수 없는 명령어는 빨간색으로, 옵션은 흰색으로 입력됩니다.

사용할 수 있는 명령어의 경우

img018

사용할 수 없는 명령어의 경우

img019

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

img011

vi 또는 nano 에디터를 통해 .zshrc 파일을 편집합니다.

.zshrc 파일 편집
$ sudo nano ~/.zshrc

처음에 plgins에 (git)가 설정되어 있습니다. 여기에 구분자를 스페이스로 하여 zsh-syntax-hightlight를 추가해주도록 합시다.

img012

CTRL + O를 눌러 저장하고 CTRL + X를 눌러 nano 에디터를 빠져나옵니다.

.zshrc를 소싱하면 플러그인이 바로 적용됩니다.

.zshrc 소싱
$ source ~/.zshrc

img013

autosuggestions

autosuggestions는 히스토리 기반으로 최근에 입력한 명령어를 미리보기 형태로 보여주는 플러그인 입니다.

GITHUB: https://github.com/zsh-users/zsh-autosuggestions

autosuggestions 플러그인 적용

img016

플러그인을 적용하기 위해서는 syntax highlighte 플러그인을 적용한 방식 그대로 설정하면 됩니다.

autosuggestions 플러그인 다운로드
$ git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

img014

vi 또는 nano 에디터를 통해 .zshrc 파일을 편집합니다.

.zshrc 파일 편집

img015

.zshrc를 소싱하면 플러그인이 바로 적용됩니다.

.zshrc 소싱
$ source ~/.zshrc

img016