zsh 을 사용하면서 참고하게 되는 사항들을 정리하여 둡니다. 나중에 재설정해야 하는 시점이나, 혹은 저처럼 맥북을 새로 구입하여 설정하시는 분들께 참고가 될 만한 자료입니다. zsh 은 시스템 설정인 만큼, 백업/복원이 쉽지는 않으니 참고가 되시기 바랍니다. (물론 타임머신 통백업/복구는 가능합니다.)

zsh 이 기본적으로 설치되어 있다는 걸, 이번에 새로 맥북을 세팅하면서 알았습니다. zsh은 기본으로 설치되어 있고, 추가적인 설정, 설치만 진행하면 됩니다. 만약 설치가 되어 있지 않다면 homebrew 나 기타 방법을 이용하여 zsh을 설치합니다.

기본 shell 을 zsh로 변경하기

zsh을 설치했다면 아래와 같이 zsh --version 명령어를 이용하여 정상적으로 설치되어 있는지 확인합니다.

 jonghunpark@Jonghun-mbpw  ~  zsh --version
zsh 5.8 (x86_64-apple-darwin19.3.0)
 jonghunpark@Jonghun-mbpw  ~ 

위와 같이 나온다면, 정상적으로 설치된 것이고 그렇다면 기본 쉘인 bashzsh 로 변경해야 합니다. 그래야 원하는 데로 조금 더 강력한 기능들이 포함된 oh-my-zsh 을 이용할 수 있습니다. 기본 쉘을 변경하는 명령어는 chsh 입니다. 아래와 같이 실행하여 기본 쉘을 변경합니다.

chsh -s `which zsh`

이 명령어는 which zsh 명령어를 통해 알게된 zsh 명령어의 실행 위치 (실체 위치)를 이용하여 chsh 명령어로 바꿔주는 것을 의미합니다.

이 명령어는 MacOS 에서 확인된 것들입니다. Linux 기반 다른 OS의 경우 명령어가 다소 상이할 수 있습니다.

oh-my-zsh 설치하기

이제 다음 명령어로 Oh My Zsh 을 설치합니다. wget 이나 fetch 하는 방법도 있습니다. 공식 GitHub 를 참고하시면 됩니다.

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

테마 설정하기

테마는 취향에 따라 설정하고, 또 계속해서 새로운 것들이 나오고 있으니 공식 테마 사이트 등을 참고해서 적용하면 됩니다. 적용방법은 마찬가지로 .zshrc 파일을 열고 ZSH_THEME 부분을 찾습니다. 그리고 원하는 테마를 적용하면 됩니다.

우선 원하는 테마 파일을 다운로드 받아, ~/.oh-my-zsh/custom/themes 폴더에 복사해 둡니다. 확장자는 .zsh-theme 로 되어 있는 파일을 넣으면 됩니다. 그리고 확장자를 제회한 이름을 ZSH_THEME 부분에 써 주면 됩니다. 예를 들어, 기본 테마 중 agnoster 테마를 적용하고자 한다면 아래와 같이 적어줍니다.

ZSH_THEME="agnoster"

기본적으로 설치되어 있는 테마들은 ~/.oh-my-zsh/themes 하위에 있습니다.

테마 변경 시 폰트문제 해결하기

테마를 변경했을 경우, 폰트가 제대로 지원하지 않아, 예쁘게 나오지 않는 경우가 있습니다.

이것은 테마에서 표현하려는 이미지같은 글자를 지원하지 못하는 경우에 발생하므로 iterm2의 폰트 설정을 변경해 주면 됩니다. 따라서 iterm 을 실행시킨 상태에서 Preference에 들어갑니다(⌘ + , 실행)

그리고 Profiles 아래 현재 프로파일에 대해서 Text 에서 폰트를 변경해 주면 됩니다. 제가 사용해본 폰트 중에서는 D2 coding 폰트와 Jetbrains Mono 폰트가 제대로 지원하는 것으로 보입니다. 폰드는 윈도우와 마찬가지로 원하는 폰트를 웹에서 다운로드 받고, 설치하여 사용하면 됩니다. (만약 설치 직후 목록에서 해당 폰트가 보이지 않는다면 iterm2 를 재실행해보면 됩니다.)

대소문자 구분 여부 설정하기

기본 설정으로는 대소문자 구분을 하지 않게 되어 있습니다. 그런데 저 같은 경우 사용자 홈 폴더(~)에 dev 폴더를 만들어서 개발 관련한 작업들을 진행하는데, de 까지 입력하고 tab 키를 누르면 Desktop 이 되어버리는 경우가 있습니다. 이 때에는 .zshrc 파일에 아래와 같이 설정을 잡아줍니다. (기본적으로 사용자 홈 폴더에 있습니다.)

# Set to this to use case-sensitive completion
CASE_SENSITIVE="true"

이 설정은 대소문자를 구분 하겠다는 뜻입니다. 기본값은 false입니다.

추가 플러그인 설치하기

zsh 은 다양한 형태의 플러그인을 제공하고 있고, 이들 중에서 추가로 필요한 플러그인은 다음 폴더에 설치하면 됩니다.

~/.oh-my-zsh/custom/plugins

저 폴더에 플러그인 졸더 자체를 두면 되기 때문에 해당 폴더에 그대로 원하는 플러그인을 check-out 받는 것이 편합니다.

# 플러그인 디렉토리로 이동
$ cd ~/.oh-my-zsh/custom/plugins

# zsh-syntax-highlighting 설치
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

# zsh-autosuggestions 설치
$ git clone https://github.com/zsh-users/zsh-autosuggestions

저는 위 두 개의 플러그인만을 사용합니다. (많이 쓴다고 크게 무거워지는 경우는 없었지만, 군더더기 없이 쓰고 싶어서 그렇게 했습니다.)

그리고 다시 .zshrc 파일을 열어 plugins= 부분에 아래와 같이 추가해 줍니다.

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

한줄에 한개씩 넣어주면 됩니다.

이렇게 하면 조금 더 보기 좋은 형태로 zsh을 사용할 수 있습니다.

zsh-syntax-highlighting

이 플러그인은 terminal 을 사용하는 데 있어, 올바른 명령어를 입력하는지 여부를 눈으로 쉽게 확인할 수 있게 해줍니다. 틀린다 한들 크게 문제될 것은 없겠지만, 어떤 프로그램이 설치되어 있는지를 쉽게 확인하는 방법 중 하나로 활용할 수 있습니다.

zsh-autosuggestions

이 플러그인은 앞서 입력하던 명령어를 gray 컬러로 보여주면서 추천해주는 기능을 갖습니다. gray 로 추천된 내용을 그대로 사용하려면 위 화살표(↑)를 눌러서 추가할 수 있습니다.

iterm2 에서 tab 간 history share 기능 해제하기

iterm2 를 사용하면서 shell을 tab 으로 구분하여 자주 사용하게 됩니다만, 이 tab들 간에 history 가 공유되면서 오히려 작업이 불편해지는 현상이 발생하였습니다. 아래 두 줄을 .zshrc 파일의 하단에 추가하여 이 설정을 변경할 수 있습니다.

unsetopt inc_append_history
unsetopt share_history

출처 및 참고자료


Leave a comment