본문 바로가기

컴퓨터/Linux

zsh 설치 및 oh-my-zsh 설정

1. 개요

기본적으로 MacOS 와 Linux 는 bash를 사용하고 있지만 zsh+oh-my-zsh 조합의 기능에 비해 많이 부족한 편이다.

따라서 Linux 및 MacOS에서 개발하는데 좀 더 편리하고 다양한 기능을 제공해 주는 zsh+oh-my-zsh 조합을 설치해 보고자 한다.

MacOS : 10.12.4 (Sierra) Mac Terminal App

Linux : Ubuntu 16.04.2




2. zsh 설치

zsh Package 를 설치한다.


Ubuntu

1
sudo apt-get install zsh
cs


MacOS

1
brew install zsh
cs

Mac의 경우 기본적으로 /bin/zsh에 설치되어 있지만 더 최신의 버전을 설치하기 위하여 brew를 이용한다.

다만 brew로 install 한 경우 /usr/local/bin/zsh 에 설치되며 이를 MacOS에서 인식하게 하기 위해

/etc/shells 파일에 /usr/local/bin/zsh 를 추가한다.


또한 처음 실행되는 터미널에 대해서만 zsh로 실행되기 때문에 Terminal App에서 기본적으로 열어야 할

Shell을 명시해줘야 한다.

터미널 -> 환경설정 -> 일반 에 "셸 열기"를 "기본 로글인 셸"에서 "명령어(절대경로)"로 바꾸고 /usr/local/bin/zsh 를 적는다.




3. 기본 sh 변경

기본 실행 시 bash가 아닌 zsh이 실행되도록 Shell을 변경해준다


Ubuntu

1
chsh -/usr/bin/zsh

cs


MacOS

1
chsh -/usr/local/bin/zsh
cs


그 후 Shell을 재시작 한 후 echo ${Shell} 을 해보면 현재 설정된 shell을 볼 수 있다.

1
2
dev@dev-vm:~$ echo ${SHELL}
/usr/bin/zsh
cs


그래도 변하지 않는다면 재로그인이나 재부팅을 하면 된다.



4. oh-my-zsh 설치

oh-my-zsh 을 설치하기 위해선 git, wget, curl Package가 설치되어야 한다.


Ubuntu

1
sudo install git wget curl

cs


MacOS

1
brew install git wget curl
cs



oh-my-zsh 설치는 아래 커맨드를 통해 설치 할 수 있다.

1
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
cs




5. theme 설정

개인적으로 "agnoster" theme 가 마음에 들어 설치했다.

~/.zshrc 파일을 열어 안의 내용 중  ZSH_THEME를 "agnoster" 로 바꾸기만 하면 되나 몇몇 특스문자를 사용하기에 

아래 커맨드를 통해서 해당 폰트가 agnoster theme에서 사용하는 특스문자를 출력 할 수 있는지 확인한다.

1
echo "\ue0b0 \u00b1 \ue0a0 \u27a6 \u2718 \u26a1 \u2699"

cs


아래 사진과 같이 깨져 나온다면 링크의 폰트를 다운 받아 설치하고 Terminal의 서체를 바꿔야 한다.


Powerline Font 는 https://github.com/powerline/fonts 에서 받을 수 있으며

아래와 같이 설치하면 된다.

1
2
3
4
5
6
7
8
# clone
git clone https://github.com/powerline/fonts.git
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts
cs


폰트 설치 후 Terminal App에서 폰트를 for Powerline 으로 끝나는 폰트로 바꿔주면 된다.


MacOS

환경설정->프로파일->서체 "변경"


Ubuntu

Edit->Profile Preferences->Custom Fonts




6. new line prompt 설정

agnoster theme는 마지막 부분에 git branch에 대한 내용이 출력되기 때문에 prompt가 가변적이기 된다

따라서 command를 치는 부분이 일정하게 나오지 않기 때문에 command는 아랫줄에 출력하도록 설정해야 보기 좋다. (어디까지나 개인적으로..)


일반적으로 Bash에서는 .bashrc 나 .bash_profile 에다가 PS1 에 대해 설정을 하면 되나

zsh+oh-my-zsh에서는 oh-my-zsh에서 prompt 출력을 정하기 때문에 config 를 좀 건드려야 한다.

다만 이를 잘 설명한 분이 계시기에 해당 링크를 공유한다.

http://totuworld.github.io/2016/04/08/zsh2line/