mac의 기본 쉘을 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에 대한 설정도 이미 설치되어 있었기 때문에 경로를 변경하기 만했습니다.
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%} %% "
- 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
# 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'를 붙여넣으면 아래와 같이 됩니다.
기타
별칭과 역사 검색 이외의 간단한 기능은 특히 문제없이 움직였습니다.
거기까지 고리고리에 커스터마이즈하고 있지 않은 사람은 상당히 순조롭게 이행할 수 있다고 생각합니다.
Reference
이 문제에 관하여(mac의 기본 쉘을 bash에서 zsh로 바꾸기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ham0215/items/d756c8b96c761a432b40텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)