[MacOS Catalina] zsh 환경 설정(Oh-My-Zsh, VSCode)
MAC

[MacOS Catalina] zsh 환경 설정(Oh-My-Zsh, VSCode)

반응형

시작하기 전에

Sidecar 기능을 사용하고자 Catalina로 OS를 업그레이드를 할 생각은 있었으나, 이렇게 무작정 포맷하고 사용할 생각은 없었습니다.. OS 업그레이드를 하다가 벽돌이 될 뻔 해서(애플의 install 서버 == 유리 서버) 그냥 포맷하고 최신 OS로 깔게 되어 의도치 않게 만나게 된 zsh이지만 나름대로 검색해보면서 환경 세팅도 변경해보고자 합니다.

원래 terminal을 bash_profile 조금 편하게 변경하는 것(PS1, alias 설정 등) 외에는 따로 건들지 않고 사용하는 편이라, 이번에도 그러려고 했습니다. PS1이 zsh에서는 다르게 쓰이는 걸 알게 되면서, 기왕 이렇게 된 거 예쁘게 쓰자라는 마음으로 시작하게 되었습니다. 따라서, 아주 초보자의 terminal 세팅이라 생각하고 편히 봐주시면 좋겠습니다.

zsh ?

Mojave를 잇는 MacOS 버전인 Catalina에서는 zsh 쉘이 기본 login shell과 interactive shell로 사용됩니다. 즉, Catalina에서 만들어진 계정은 기본적으로 zsh를 사용합니다. Bash 쉘 역시 사용이 가능하나 기존 macOS들부터 애플은 zsh를 사용할 것을 권하고 있습니다.

zsh 쉘은 기본 제공되는 맞춤법 수정, 향상된 명령줄 완성, 쉘의 플러그인 역할을 하는 모듈, 명령 대신 파일 이름 또는 명령줄의 다른 항목을 별칭으로 지정할 수 있는 전역 별명 및 많은 테마 지원을 합니다. 즉, bash 쉘과 비슷하지만 좀 더 많은 기능 또는 옵션들이 있어 좀 더 흥미롭습니다. 

Oh-My-Zsh

Oh-My-Zsh는 zsh 쉘의 환경 설정을 다루는 프레임워크입니다. 관련된 커뮤니티가 활성화되어 있어 많은 테마와 플러그인들을 사용할 수 있습니다. 먼저, zsh 쉘이 설치된 macOS에 Oh My Zsh를 설치하도록 하겠습니다.

# Oh-My-Zsh 설치하기(하기 명령어를 terminal에 입력합니다)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Oh-My-Zsh 설치 시 발생 가능한 문제

Oh-My-Zsh 설치 시 하기 사진 중 왼쪽 사진의 빨간 박스와 같이 permission 문제가 발생할 수 있습니다. 해당 문제는 Insecure하다는 디렉토리의 권한을 변경해도 되지만, 다른 사이드 이펙트가 있을 수 있기 때문에 하기 설정값을 zshrc에 넣어주는 편이 안전합니다.

# .zshrc 파일 속에서 export ZSH 구문 이전에 넣어주어야 합니다(불러오기 전 permission 체크 막기 위함).

# For oh-my-zsh (permission issue)
ZSH_DISABLE_COMPFIX="true"

oh-my-zsh 설치 시 발생할 수 있는 권한 이슈

Oh-My-Zsh 장점

1. 경로를 제대로 치지 않고 tab을 쳐도 전체 경로를 찾아준다.

# 아래와 같이 친 후 tab을 치면 전체 경로가 완성됩니다.
$ cd Do/Ja 

$ cd Documents/Java/

2. 여러 테마들이 존재한다.

~/.zshrc 파일을 열어보면 아래와 같은 파일을 발견할 수 있습니다. 해당 파일 내용 중, ZSH_THEME 부분을 수정하면 테마를 변경할 수 있다. ZSH_THEME="random"을 선택할 경우, 터미널을 실행할 때마다 다른 테마를 경험해볼 수 있습니다. 테마 종류는 아래 url에서 확인할 수 있으며, 필자가 사용하는 테마는 "agnoster"입니다.

github.com/ohmyzsh/ohmyzsh/wiki/Themes

 

ohmyzsh/ohmyzsh

🙃 A delightful community-driven (with 1700+ contributors) framework for managing your zsh configuration. Includes 200+ optional plugins (rails, git, OSX, hub, capistrano, brew, ant, php, python, et...

github.com

default = "robbyrussell", 오른쪽 사진은 agnoster 테마 설정 예

3. 다양한 플러그인들이 존재한다.

~/.oh-my-zsh/plugins에 들어가면 많은 플러그인들이 존재합니다. 해당 플러그인들은 많이 사용되는 프로그램의 alias를 미리 정의해둔 것으로, ~/.zshrc에 사용하고자 하는 플러그인을 스페이스로 구분해서 적으면 사용이 가능합니다.

# ~/.zshrc 파일 내에 하기와 같이 플러그인을 스페이스로 구분해서 나열
plugins=(git yum zsh-autosuggestions alias-tips)

# ~/.zshrc를 수정한 후에는 터미널을 재시작하거나 하기 명령어를 입력해서 설정을 적용할 수 있음
source ~/.zshrc

Oh-My-Zsh가 제공하는 많은 플러그인들

* alias-tips

위 plugin 예시에서 적은 alias-tips 플러그인을 적용하면, alias를 외우지 않고도 사용이 가능해집니다. 만약 아래 사진과 같이 alias-tips 플러그인을 찾지 못한다고 하면 아래 url을 보고 alias-tips 플러그인을 다운 받아서 사용하면 됩니다. alias-tips 플러그인을 설치한 후 zshrc에 해당 설정을 넣게되면 "Alias tip: " 행을 통해 alias 값을 알려줍니다.

github.com/djui/alias-tips

 

djui/alias-tips

An oh-my-zsh plugin to help remembering those aliases you defined once - djui/alias-tips

github.com

# .oh-my-zsh/plugins 폴더 들어가기
$ cd .oh-my-zsh/plugins

# git clone을 통해 alias-tips 설치하기
$ git clone https://github.com/djui/alias-tips.git

왼쪽 사진은 alias-tips 플러그인이 없어 적용이 되지 않는 상태, 오른쪽은 alias-tips 플러그인을 설치하고 적용하는 모습

만약, "Alias tips: "라고 뜨는 부분을 변경하고 싶다면 zshrc 파일 내에 하기 변수를 추가하여 메시지를 변경할 수도 있습니다.

export ZSH_PLUGINS_ALIAS_TIPS_TEXT="Alias tip: 을 대체할 문자열 삽입"

* zsh-autosuggestions

Oh-My-Zsh에서 사용할 수 있는 플러그인 중 자동완성 플러그인이 있습니다. zsh-autosuggestions는 명령어를 입력할 때 옅은 글씨로 뭘 칠 수 있는지 보여주는 편리한 플러그인입니다. 옅은 색상으로 추천된 명령어를 그대로 입력하고자 할 때에는 화살표(→)를 입력하면 됩니다.

해당 플러그인을 설치하는 방법은 아래와 같습니다.

# .oh-my-zsh/plugins 폴더 들어가기
$ cd .oh-my-zsh/plugins

# git clone을 통해 zsh-autosuggestions 설치하기
git clone https://github.com/zsh-users/zsh-autosuggestions

zsh-autosuggestion 설치 및 사용 예

Zsh 사용 TIP

1. 터미널에서 컴퓨터 이름 삭제(프롬프트, PS1 변경)하기

기본적으로 Macbook pro의 prompt(프롬프트)는 매우 길게 잡혀 있습니다. 이로 인해, 디렉토리를 조금 깊게 들어가면 명령어가 제대로 보이지 않아 애먹이는 경우가 있습니다. 이때, zshrc 파일 제일 하단에 하기 내용을 추가하면 prompt를 단촐하게 사용할 수 있습니다.

# SET PROMPT(ex> earth ~)
prompt_context() {
    if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
        prompt_segment black default "%(!.%{%F{yellow}%}.)$USER" 
    fi  
}  

# 만약 prompt를 아예 빈 공간으로 사용하고자 한다면 아래와 같이 설정한다.
prompt_context() {
    if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
        prompt_segment black default "" 
    fi  
}  

프롬프트 변경 예

Oh-My-Zsh 테마를 agnoster 설정 후 terminal 프롬프트가 깨지는 경우 해결 방법

프롬프트 깨지는 예(Apple Gothic 폰트)

프롬프트가 깨지지 않는 폰트로는 여러가지가 있는 것 같지만, 개인적으로 네이버 폰트가 보기 편해서 네이버 폰트를 다운받아서 사용했습니다. 네이버 폰트는 하기 url에서 다운 받을 수 있으며 다운로드 후 폰트를 설치하면 터미널 환경 설정 내 글꼴 서식 시 D2 Coding 글꼴을 선택할 수 있게됩니다. D2 Coding 폰트로 글꼴 변경 후에는 프롬프트가 제대로 뜨는 것을 확인할 수 있습니다.

github.com/naver/d2codingfont

 

naver/d2codingfont

D2 Coding 글꼴. Contribute to naver/d2codingfont development by creating an account on GitHub.

github.com

폰트 변경 방법

Oh-My-Zsh 테마를 agnoster 설정 후 Visual Studio Code 프롬프트가 깨지는 경우 해결 방법

Visual Studio Code 엳시 프롬프트가 깨진다면, 하기와 같이 Code > Preferences > Settings에 들어가서 font를 추가해야 합니다. 기존에 있던 폰트를 모두 지워야하는지는 확인하지 못하였습니다. 일단, 지금까지는 D2 Coding을 폰트 그룹에 추가한 이후에는 프롬프트가 깨지지 않아 기존 폰트는 삭제하고 사용중입니다. 폰트를 추가했는데도 프롬프트가 깨진다면, VS code를 껏다가 켜보시면 잘 될 것입니다.

 

Visual Studio Code 역시 프롬프트 깨짐
가운데 사진은 확실히 해야하는 것은 아님

마치며

iterm2도 사용하면서 좀 더 예쁘게 사용해볼까도 했지만, 추후에 iterms의 필요성을 느낄 때 설치하기로 했습니다. 일단 이 테마로 한동안 살면서 zsh을 사용해보도록 하겠습니다.

나름대로 파스텔톤으로 색상 변경

반응형