ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Mac 개발환경 설정] 3. zsh 설정하기
    Mac 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

     

    댓글

Designed by Tistory.