Mac

[Mac 개발환경 설정] 3. zsh 설정하기

Yechan Choi 2023. 2. 5. 23:34

Shell을 커스텀해보자.

개발자라면 좋든 싫든 쉘 환경을 자주 사용하게 될텐데, 그럭저럭 쓸만한 ubuntu와 달리 mac의 기본 shell은 그냥 사용하기에는 좀 많이 아쉬운 편이다.

 

보통 맥에서 많이 사용하는 터미널 앱은 기본 Terminal 앱 혹은 iTerm2이다.

둘 중 무엇을 써도 상관 없지만 ITerm2가 좀 더 편하고 이쁘다고 해서 iTerm2를 많이 쓰는 것 같다.

iTerm2 설치는 https://iterm2.com에서 할 수 있다.


맥에서의 기본 shell은 bash였지만 Mac OS Catalina부터는 zsh로 바뀌었다.

보통 '맥 zsh 설정'을 검색하면 나오는 내용은 Oh my Zsh를 사용하는 내용이다. 그런데 Oh my Zsh는 terminal을 느리게 만들어서 사용을 안 하는 걸 추천한다.

하지만 쉽고 빠르게 Shell 설정을 커스텀 할 수 있어서 그럭저럭 괜찮다.

글 마지막 부분에 OMZ를 설치하는 방법을 적어두도록 하겠다.


Using ZSH without OMZ

이 내용은 같은 제목의 글을 참고해서 작성하였다.

 

Oh my Zsh을 사용하는 이유는 쉬운 테마 적용과 커스텀, 그리고 간단한 플러그인 설치 때문이다.

 

그런데 zsh 플러그인을 설치하는 방법은 매우 간단한데, 그 플러그인을 zshrc에서 로드해주기만 하면 된다.

source custom_plugin_path

Zsh 폴더 설정

zsh 폴더를 설정해주자.

나는 DEV_SDK 하위 폴더로 zsh 폴더를 만들어서 설정하였는데, 어디든 상관없다.

DEV_SDK 관련해서는 [Mac 개발환경 설정] 1. DEV_ROOT 설정하기 글에 설명되어 있다.

mkdir $DEV_SDK/zsh

 

그리고 임시로 ZSH 환경변수를 설정해주자.

ZSH=$DEV_SDK/zsh

plugin과 theme를 저장할 폴더를 만들자.

mkdir $ZSH/plugins
mkdir $ZSH/themes
touch $ZSH/.zshrc

History 설정

먼저 History를 저장할 파일을 만들자.

만약 이전에 Oh My Zsh를 사용한 적이 있으면 기존 history를 복사해오고, 아니면 새로 만들어 주자

# 복사
mv ~/.zsh_history $DEV_SDK/zsh/.zsh_history
# 새로 만들기
touch $ZSH/.zsh_history

그리고 아래 내용을 $ZSH/.zshrc 파일에 추가해주면 된다.

# >>> Zsh History >>>
export HISTFILE=$ZSH/.zsh_history

# How many commands zsh will load to memory.
export HISTSIZE=50000

# How many commands history will save on file.
export SAVEHIST=50000

# History won't save duplicates.
setopt HIST_IGNORE_ALL_DUPS

# History won't show duplicates on search.
setopt HIST_FIND_NO_DUPS
# <<< Zsh History <<<

테마 설정

우선 테마 폴더로 이동한다

cd $ZSH/themes

그리고 원하는 zsh 테마를 설치해주면 되는데, 보통 git clone 후 source로 설정할 수 있다.

나는 Spaceship을 사용해보려고 한다.

git clone https://github.com/spaceship-prompt/spaceship-prompt.git

이 때 mac을 처음으로 설정하는 거라면 명령어 라인 도구(Command Line Tools)를 설치해야 한다고 나올 수 있는데, 알림창에 따라서 설치해주면 된다.

git 로그인이 필요하다고 하면 해주면 되는데, 

remote: Support for password authentication was removed on August 13, 2021 

이라고 나오면 github에서 accesstoken을 발급받아 password 대신 사용하거나, ssh로 클론받으면 된다.

 

이후 다운받은 테마를 적용하고, 설정하는 내용을 $ZSH/.zshrc에 추가해주자.

아래 내용은 내가 적용한 예시이다.

# >>> Zsh Theme >>>
source $ZSH/themes/spaceship-prompt/spaceship.zsh-theme

SPACESHIP_PROMPT_ORDER=(
user
dir
host
git
hg
exec_time
line_sep
jobs
exit_code
char
)

SPACESHIP_USER_SHOW=always
SPACESHIP_PROMPT_ADD_NEWLINE=false
SPACESHIP_CHAR_SYMBOL=">"
SPACESHIP_CHAR_SUFFIX=" "
# <<< Zsh Theme <<<

Plugin 설치

theme와 완전히 똑같은 방식이다.

나는 fast-syntax-hilighting, zsh-autosuggestions, zsh-completions을 사용한다.

cd $ZSH/plugins
git clone https://github.com/zdharma-zmirror/fast-syntax-highlighting.git
git clone https://github.com/zsh-users/zsh-autosuggestions.git
git clone https://zsh-users/zsh-completions.git

 

.zshrc 파일에 각각 설정해준다.

# >>> Zsh Plugines >>>
# fast-syntax-highlighting
source $ZSH/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh
# zsh-autosuggestions
source $ZSH/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
# zsh-completions
fpath=($ZSH/plugins/zsh-complete/src $fpath)
# <<< Zsh Plugines <<<

$DEV_ROOT/.zshrc 파일에 설정

$DEV_ROOT/.zshrc 파일에 아래 내용을 추가해준다.

만약 DEV_ROOT를 설정하지 않을 계획이라면 ~/.zshrc 파일에 아래 내용을 추가해주면 된다.

# >>> ZSH >>>
export ZSH=$DEV_SDK/zsh
source $ZSH/.zshrc
# <<< ZSH <<<

 

이래저래 내용은 길었지만, 그렇게 어렵거나 하는 내용은 없을 것이다.

이 방법대로 zsh을 커스텀하였다면 아래의 Oh My Zsh 설치는 따라하지 말자.


Oh My Zsh 설치

시작하기 전에, 아래 과정을 따라 Oh My Zsh를 설치하면 ~/.zshrc 파일 내용이 완전히 변경되기 때문에 이전에 설정한 내용이 있으면 백업해두었다가 설치 후에 다시 추가해주자.

그리고 wget을 사용하는 과정이 있는데, 아마 wget이 설치되어 있지 않아 안 될 것이다. brew를 설치해 wget을 설치한 후 이 내용을 따라해보자. brew 설치는 다음 글에서 다룰 예정이다.

Oh My Zsh 설치

아래 명령어로 oh my zsh를 설치해준다.

sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

테마 설치

나는 omz의 테마 중에는 powerlevel10k를 가장 선호한다.

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

이후 화면을 친절하게 커스텀하는 UI가 나올 것이다.

그러면서 필요하다면 특수 기호를 보여주는 폰트가 설치될텐데, 설치가 되지 않아 깨져보인다면 직접 설치해주자.

https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf
https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf
https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf

테마를 설치한 후에는 ~/.zshrc 파일을 열어 테마를 바꾸어준다.

기존에 설정되어 있는 값이 있을텐데 그걸 지우고 아래 내용으로 바꾼다.

ZSH_THEME="powerlevel10k/powerlevel10k"

플러그인 설치

syntax highlighting과 autosuggestion을 설치해준다.

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

그 다음 ~/.zshrc 파일의 plugins 부분을 찾아서 아래 내용으로 바꾼다.

plugins=(git zsh-syntax-highlighting zsh-autosuggestions)

이제 새 Shell을 열거나 source ~/.zshrc로 현재 쉘에 적용해주면 된다.

보면서 느꼈겠지만, Oh My Zsh를 사용하는 방법이나 내가 추천하는 방법이나 크게 다르지 않다.

그러니 속도 저하가 있는 Oh My Zsh를 설치하는 것보다는 직접 설정할 수 있는 첫번째 방법을 추천한다.


참고

https://dev.to/hbenvenutti/using-zsh-without-omz-4gch