zsh 설치하기
목차
Ubuntu zsh install
아래 명령어로 zsh를 설치한다.
1
apt-get install zsh
아래 명령어로 현재 쉘 상태를 확인하고
1
echo $SHELL
chsh -s $(which zsh)
명령어를 통해 쉘을 zsh로 바꿔준다.
chsh
명령어 사용 중 chsh:PAM authentication failed
오류가 뜰 시
/etc/pam.d/chsh
에서 auth_required pam_shell.so
부분을 주석처리한 후
chsh
명령어를 재실행한다.
/etc/passwd
에서 변경 진행해도 상관없다.
passwd 에서 쉘을 바꿔줄 경우 맨 마지막 부분의 쉘경로를
/bin/zsh
로 변경해주면 된다.
1
2
(username):x:(uid):(gid):(comment):(home dir):(shell path)
user:x:0:0:user:/home/user:/bin/zsh
이후 터미널을 재시작한다.
echo $SHELL
명령어 출력결과로 zsh가 나오면 변경이 완료된 것이다.
Oh-My-Zsh 설치
zsh 테마 oh-my-zsh를 설치하여 관리할 수 있도록 한다.
1
curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | /bin/bash -
필자는 $HOME/.zsh/ 에 zsh 관련 설정 파일을 관리하므로 해당 디렉토리로 .oh-my-zsh를 옮긴다.
1
2
test ! -d $HOME/.zsh && mkdir $HOME/.zsh
mv $HOME/.oh-my-zsh $HOME/.zsh/
powerlevel10k 설치
1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $HOME/.zsh/.oh-my-zsh/custom/themes/powerlevel10k
powerlevel10k저장소에서 클론한다.
클론 시 ~/.oh-my-zsh/custom/themes/powerlevel10k
에 저장시켜 .oh-my-zsh가 powerlevel10k 테마를 인식할 수 있도록 한다.
~/.zshrc
에서 ZSH_THEME
변수를 아래 값과 같이 변경하여 zsh의 테마를 지정해준다.
ZSH_THEME="powerlevel10k/powerlevel10k"
또한 256 컬러를 지원하는 터미널에서만 사용할 수 있기에
~/.zshrc
를 열어 export TERM=xterm-256color
값을 설정해준다.
이후 아이콘을 출력시킬 폰트를 설치해야 한다.
폰트의 경우 p10k에서 MesloLGS NF
를 공식 지원하고 있으니 왠만하면 해당 폰트를 설치할 수 있도록 하자. (아래 링크에서 폰트를 다운받을 수 있다.)
https://github.com/romkatv/powerlevel10k/#user-content-fonts
또는 Nerd-Font라고 아이콘 글꼴, 세로폭 등이 커스텀된 글꼴을 만드는 프로젝트가 존재한다. Nerd-Font 사이트에서 자신이 사용하는 또는 자신에게 가장 취향에 맞는 폰트를 설치하면 된다.
https://github.com/ryanoasis/nerd-fonts
필자는 현재 “Fantasque Sans” 폰트가 마음에 들어 Nerd-Font에서 해당 폰트를 다운받아 사용하고 있다. Fantasque Sans 폰트 외에도 Hack, Mononoki, Fira Code 등 기타 유명한 코딩 폰트들이 존재하니 찾아보면 좋을 것이다.
https://github.com/ryanoasis/nerd-fonts/tree/master/src/unpatched-fonts/FantasqueSansMono
https://www.programmingfonts.org/
프로그래밍 폰트를 체험할 수 있는 사이트이다.
이후 터미널을 다시 실행시키거나 p10k configure
명령어를 통해 p10k 테마를 설정한다.
필자의 사용 설정은 다음과 같다.
zsh 및 p10k가 업데이트되면서 해당 설정은 바뀔 수 있다.
one-line 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
Prompt Style : (3) Rainbow Character
Set : (1) Unicode
Show current time? : (2) 24-hour format
Prompt Separators : (1) Angled Prompt
Heads : (1) Sharp Prompt
Tails : (1) Flat
Prompt Height : (1) One line
Prompt Spacing : (1) Compact
Icons : (2) Many icons [ (1) Few icons 사용해도 무방 ]
Prompt Flow : (1) Concise
Enable Transient Prompt? : (n) No
Instant Prompt Mode : (1) Verbose (recommended)
Apply changes to ~/.zshrc? : (y) Yes (recommended)
multi-line 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Does this look like a diamond (rotated square)? (y) Yes.
Does this look like a lock? (y) Yes.
Does this look like a Debian logo (swirl/spiral)? (y) Yes.
Do all these icons fit between the crosses? (y) Yes. Icons...
Prompt Style : (3) Rainbow Character
Set : (1) Unicode
Show current time? : (2) 24-hour format
Prompt Separators : (1) Angled Prompt
Heads : (1) Sharp Prompt
Tails : (1) Flat
Prompt Height : (2) Two lines
Prompt Connection : (3) Solid (아무거나 상관 없음.)
Prompt Frame : (1) No frame
Connection Color : (1) Lightest. (4) Darkest (아무거나 상관 없음)
Prompt Spacing : (1) Compact
Icons : (2) Many icons [ (1) Few icons 사용해도 무방 ]
Prompt Flow : (1) Concise
Enable Transient Prompt? : (y) Yes
Enable Transient Prompt? : (n) No
Instant Prompt Mode : (1) Verbose (recommended)
Apply changes to ~/.zshrc? : (y) Yes (recommended)
Apply changes to ~/.zshrc? : (n) No
p10k 테마 커스텀하기
이후 디폴트 테마 설정이 마음에 들지 않아 ~/.p10k.zsh
파일을 추가로 수정하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 변수의
# load 주석 제거
디렉토리를 보여주는 설정을 해당 설정값으로 세팅
typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=0
typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=""
typeset -g POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute_chars"
디렉토리 배경색, 폰트 색, 스타일 지정
typeset -g POWERLEVEL9K_DIR_BACKGROUND=27
typeset -g POWERLEVEL9K_DIR_FOREGROUND=0
typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=232
typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=232
typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
깃 관련 배경색, 폰트 색, 스타일 지정
typeset -g POWERLEVEL9K_VCS_CLEAN_BACKGROUND=35
typeset -g POWERLEVEL9K_VCS_MODIFIED_BACKGROUND=84
typeset -g POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=28
typeset -g POWERLEVEL9K_VCS_CONFLICTED_BACKGROUND=9
typeset -g POWERLEVEL9K_VCS_LOADING_BACKGROUND=8
xterm-256 의 색 설정 값을 preview로 보려면 아래 명령어를 통해 알 수 있다.
for i in {0..255}; do print -Pn “%K{$i} %k%F{$i}${(l:3::0:)i}%f “ ${${(M)$((i%6)):#3}:+$’\n’}; done
해당 명령어를 외우는 것이 귀찮아서 alias
로 지정시켰다.
alias colorpreview='for i in {0..255}; do print -Pn “%K{$i} %k%F{$i}${(l:3::0:)i}%f “ ${${(M)$((i%6)):#3}:+$’\n’}; done'
alias 지정 후 colorpreview를 진행하면 256 색상에 대한 값들을 확인할 수 있다.
번외 : full_icon에서 none_icon 으로 바꾸는 법
해당 방법은 NerdFont와 같이 아이콘을 지원하는 폰트를 사용할 경우 따로 작업을 해주지 않아도 된다.
코딩을 하다보면 폰트 호환성 등의 문제로 아이콘이 깨져 보이는 현상이 있을 수 있다.
이때 .p10k.zsh
파일을 수정하는 것으로 아이콘을 보이지 않게끔 설정할 수 있다.
-
.p10k.zsh
파일을 연다. -
POWERLEVEL9K_MODE
변수를 찾는다.-
해당 변수는 아래와 같이 세팅이 되어 있을 것이다.
1
typeset -g POWERLEVEL9K_MODE=nerdfont-complete
-
아래 변수의 값을 바꾸어준다.
1
typeset -g POWERLEVEL9K_MODE=powerline
-
-
더이상 아이콘이 보이지 않는다.
그러나 추가적인 문제를 발견하였다.
.git path가 있는 디렉토리에 접근 시 아이콘 한개가 깨져 보이는 것을 추가로 확인…-
마찬가지로
.p10k.zsh
파일을 열어POWERLEVEL9K_VCS_BRANCH_ICON
변수를 찾는다. 해당 변수는 아래와 같이 세팅이 되어 있을 것이다.1
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 '
-
아래 변수의 값을 바꾸어준다.
1
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
-
최종결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you.
# full icon
# typeset -g POWERLEVEL9K_MODE=nerdfont-complete
# none icon
typeset -g POWERLEVEL9K_MODE=powerline
# GIT BRANCH ICON ============================================================
# Branch icon. Set this parameter to '\UE0A0 ' for the popular Powerline branch icon.
# full icon
# typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 '
# none icon
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
# Untracked files icon. It's really a question mark, your font isn't broken.
# Change the value of this parameter to show a different icon.
typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
zshrc 파일 수정
vscode ssh 등으로 접속 시도 시 zsh 쉘을 새로 열때마다 .zshrc 를 자동으로 실행시키지 않아
.oh-my-zsh
, p10k
테마 등 여러 설정이 적용되지 않는 문제가 발생하였다.
/etc/zshrc
또는 /etc/zsh/zshrc
와 같이 /etc
경로에 zsh 실행 시 동작하는 zshrc
파일이 존재한다.
해당 파일을 찾아 맨 밑 줄에 아래 코드를 추가한다.
1
2
3
4
5
6
# Useful support for interacting with Terminal.app or other terminal programs
if [ -r "/etc/zshrc_$TERM_PROGRAM" ]; then
. "/etc/zshrc_$TERM_PROGRAM"
else
. "/etc/zshrc_default"
fi
만약 경로가 /etc/zshrc
가 아니라 /etc/zsh/zshrc
인 경우에는 아래 vi 명령어로 경로를 수정한다.
1
:%s#/etc/zshrc_#/etc/zsh/zshrc_#g
이후 /etc/zshrc_default
파일을 만들어 (경로가 /etc/zsh/zshrc
인 경우에는 /etc/zsh/zshrc_default
) 파일을 만들면 되시겠다.
/etc/zshrc_default
파일에는 아래 코드를 추가한다.
1
. $HOME/.zshrc