mac의 기본 쉘을 bash에서 zsh로 바꾸기

Mac을 Catalina에 올리고 나서 터미널을 시작할 때마다 아래의 문장이 나오게 되었기 때문에 무거운 허리를 올려 bash에서 zsh로 갈아타기로 했습니다.
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

'bash zsh mac'라든지 구그하면 비슷한 기사가 많이 있습니다만, 이 기사에서는 zsh가 들어 있는 상태에서 bash에서 zsh로의 이행하는 순서를 써 갑니다.

절차



설정 파일 준비



먼저 bash 구성 파일을 zsh 용으로 복사합니다.
이력이 없어지면 작업 효율이 상당히 나빠지므로 잊지 않고 복사합니다.
cp -p .bash_profile .zprofile
cp -p .bashrc .zshrc
cp -p .bash_history .zsh_history

프롬프트 변경


- export PS1="\W:\$ "
+ export PROMPT="%{$fg[cyan]%}%c%{$reset_color%} %% "

프롬프트의 문법이 바뀌고 있네요.
원래 현재 디렉토리만 표시하고 있었으므로, 그대로의 사양으로 이행했습니다.
변경 다음에 색을 붙여 보거나 마지막 기호는 zsh의 디폴트에 맞추어 %로 해 보았습니다.

이 기회에 더 멋이 되지 않을까 생각해 세상의 사람은 어떻게 하고 있는지 구그라고 보았습니다만 2행 프롬프트의 기사가 많아 자신의 취향에 맞지 않았기 때문에 그만두었습니다.
↓가 내 환경의 캡처입니다 (bash->zsh). Simple is best!!


탭 보관



git의 tab 보관이나 gcp-sdk의 설정이 망가져 버렸기 때문에 수정.
zsh에 대한 설정도 이미 설치되어 있었기 때문에 경로를 변경하기 만했습니다.
  • git
  • - if [ -f $(brew --prefix)/etc/bash_completion ]; then
    -   . $(brew --prefix)/etc/bash_completion
    - elif [ -f $(brew --prefix)/etc/bash_completion.d/git-completion.bash ]; then
    -   . $(brew --prefix)/etc/bash_completion.d/git-completion.bash
    - fi
    + fpath=($(brew --prefix)/share/zsh/site-functions $fpath)
    + autoload -U compinit
    + compinit -u
    
  • google cloud sdk
  • # The next line updates PATH for the Google Cloud SDK.
    - if [ -f '/install/pass/google/google-cloud-sdk/path.bash.inc' ]; then . '/install/pass/google/google-cloud-sdk/path.bash.inc'; fi
    + if [ -f '/install/pass/google/google-cloud-sdk/path.zsh.inc' ]; then . '/install/pass/google/google-cloud-sdk/path.zsh.inc'; fi
    
    # The next line enables shell command completion for gcloud.
    - if [ -f '/install/pass/google/google-cloud-sdk/completion.bash.inc' ]; then . '/install/pass/google/google-cloud-sdk/completion.bash.inc'; fi
    + if [ -f '/install/pass/google/google-cloud-sdk/completion.zsh.inc' ]; then . '/install/pass/google/google-cloud-sdk/completion.zsh.inc'; fi
    

    기록 검색



    peco와 history를 사용하여 ctrl + r의 히스토리 검색을 커스터마이즈하고 있었지만 움직이지 않으므로 수정.
    이 대응으로 이력 검색이 엄청 빨라졌습니다! 자주 사용하는 명령이므로 더 빨리 zsh로 이행하면 좋았다. . .
    - peco-history() {
    -     local NUM=$(history | wc -l)
    -     local FIRST=$((-1*(NUM-1)))
    -     if [ $FIRST -eq 0 ] ; then
    -         history -d $((HISTCMD-1))
    -         echo "No history" >&2
    -         return
    -     fi
    -     local CMD=$(fc -l $FIRST | sort -k 2 -k 1nr | uniq -f 1 | sort -nr | sed -E 's/^[0-9]+[[:blank:]]+//' | peco | head -n 1)
    -     if [ -n "$CMD" ] ; then
    -         history -s $CMD
    -         if type osascript > /dev/null 2>&1 ; then
    -             (osascript -e 'tell application "System Events" to keystroke (ASCII character 30)' &)
    -         fi
    -     else
    -         history -d $((HISTCMD-1))
    -     fi
    - bind -x '"\C-r":peco-history'
    + function peco-history-selection() {
    +     BUFFER=`history -n 1 | tail -r  | awk '!a[$0]++' | peco`
    +     CURSOR=$#BUFFER
    +     zle reset-prompt
    + }
    + zle -N peco-history-selection
    + bindkey '^R' peco-history-selection
    

    붙여 넣을 때 색상이 반전됩니다.



    zsh로 한 다음 터미널에 문자열을 붙여 넣으면 붙여 넣은 문자만 색상이 반전하게 되었습니다. bash라고 같은 조작을 해도 이러한 거동은 하지 않았습니다.
    이것은 고치는 방법을 몰랐다. . . 알고 계시다면 알려주세요 mm
    e.g. 'hogehoge'를 붙여넣으면 아래와 같이 됩니다.


    기타



    별칭과 역사 검색 이외의 간단한 기능은 특히 문제없이 움직였습니다.
    거기까지 고리고리에 커스터마이즈하고 있지 않은 사람은 상당히 순조롭게 이행할 수 있다고 생각합니다.

    좋은 웹페이지 즐겨찾기