JHH9232 Blog

zsh 설치하기


|

목차


Ubuntu zsh install


아래 명령어로 zsh를 설치한다.

apt-get install zsh

아래 명령어로 현재 쉘 상태를 확인하고

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로 변경해주면 된다.

(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를 설치하여 관리할 수 있도록 한다.

curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | /bin/bash -

powerlevel10k 설치

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.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

https://www.nerdfonts.com/

필자는 현재 “**Fantasque Sans”** 폰트가 마음에 들어 Nerd-Font에서 해당 폰트를 다운받아 사용하고 있다. Fantasque Sans 폰트 외에도 Hack, Mononoki, Fira Code 등 기타 유명한 코딩 폰트들이 존재하니 찾아보면 좋을 것이다.

https://github.com/ryanoasis/nerd-fonts/tree/master/src/unpatched-fonts/FantasqueSansMono

Untitled

https://www.programmingfonts.org/

프로그래밍 폰트를 체험할 수 있는 사이트이다.

이후 터미널을 다시 실행시키거나 p10k configure 명령어를 통해 p10k 테마를 설정한다.

필자의 사용 설정은 다음과 같다.

zsh 및 p10k가 업데이트되면서 해당 설정은 바뀔 수 있다.

one-line 설정

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 설정

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 파일을 추가로 수정하였다.

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 색상에 대한 값들을 확인할 수 있다.

Untitled


번외 : full_icon에서 none_icon 으로 바꾸는 법

해당 방법은 NerdFont와 같이 아이콘을 지원하는 폰트를 사용할 경우 따로 작업을 해주지 않아도 된다.

코딩을 하다보면 폰트 호환성 등의 문제로 아이콘이 깨져 보이는 현상이 있을 수 있다.

이때 .p10k.zsh 파일을 수정하는 것으로 아이콘을 보이지 않게끔 설정할 수 있다.

  1. .p10k.zsh 파일을 연다.
  2. POWERLEVEL9K_MODE 변수를 찾는다.
    1. 해당 변수는 아래와 같이 세팅이 되어 있을 것이다.

       typeset -g POWERLEVEL9K_MODE=nerdfont-complete
      
    2. 아래 변수의 값을 바꾸어준다.

       typeset -g POWERLEVEL9K_MODE=powerline
      
  3. 더이상 아이콘이 보이지 않는다.
    그러나 추가적인 문제를 발견하였다.
    .git path가 있는 디렉토리에 접근 시 아이콘 한개가 깨져 보이는 것을 추가로 확인…

    Untitled

    1. 마찬가지로 .p10k.zsh 파일을 열어 POWERLEVEL9K_VCS_BRANCH_ICON 변수를 찾는다. 해당 변수는 아래와 같이 세팅이 되어 있을 것이다.

       typeset -g POWERLEVEL9K_VCS_BRANCH_ICON='\uF126 '
      
    2. 아래 변수의 값을 바꾸어준다.

       typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
      

최종결과

# 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='?'

Comments