Mac OS Catalina용 bash에서 zsh로 마이그레이션

Mac OS Catalina용 bash에서 zsh로 마이그레이션

여러분 중 일부는 알고 계시겠지만, Mac OS Catalina로 업그레이드한 후 Apple은 사용자에게 기본 셸로 zsh로 마이그레이션하라는 메시지를 표시하고 있습니다.

이제 bash를 열 때마다 경고가 표시됩니다. ~/.bash_profile에 아래 줄을 추가하는 것을 비활성화할 수 있습니다(관심 있는 경우).

export BASH_SILENCE_DEPRECATION_WARNING=1

그러나 나는 (나를 포함하여) 많은 사람들이 zsh로 전환하고 싶어한다고 생각합니다.

내 현재 ~/.bash_profile은 다음과 같습니다.

# searches this directory for executables first
export PATH="/usr/local/bin:$PATH"

# jenv
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"

# rbenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

# pyenv
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"

# nodenv
export PATH="$HOME/.nodenv/bin:$PATH"
eval "$(nodenv init -)"

# node-build-definitions
export NODE_BUILD_DEFINITIONS="/usr/local/opt/node-build-update-defs/share/node-build"

# bash auto-completion
if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion    
fi

# git branch in prompt
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

# bash profile theme
export PS1="\[\e[1;37m\]parthnaik:\[\033[33;1m\]\w\[\033[m\]\$(parse_git_branch) \n$ "
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

# firevault memory security
alias sleepsafe='sudo pmset -a destroyfvkeyonstandby 1 hibernatemode 25 standby 0 standbydelay 0'
alias sleepdefault='sudo pmset -a destroyfvkeyonstandby 0 hibernatemode 3 standby 1 standbydelay 10800'

# enable / disable captive portal
alias disablecaptiveportal='sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.captive.control Active -bool false'
alias enablecaptiveportal='sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.captive.control Active -bool true'

온라인에 상충되는 정보가 있는 것 같기 때문에 나보다 지식이 풍부한 사람이 무엇이 어디로 가는지 이해하는 데 도움을 줄 수 있기를 바랐습니다.

지금까지 내가 읽은 내용에서 내가 본 다양한 제안은 다음과 같습니다.

  1. ~/.bash_profile 붙여넣기를 ~/.zshrc에 복사합니다.
  2. ~/.zshrc 하단에 다음 코드를 추가합니다.
if [ -f ~/.bash_profile ]; then 
    . ~/.bash_profile;
fi
  1. ~/.aliases 파일과 ~/.paths 파일을 생성한 다음 이전 버전과의 호환성을 유지하기 위해 ~/bash_profile과 ~/.zshrc 모두에 소싱/가져옵니다.

이 외에도 다음과 같은 명령을 통해 매일 자동으로 실행되는 .sh 스크립트가 있습니다.

sh script_name.sh

아래와 같이 zsh를 사용하도록 변경해야 합니까? bash 및 zsh가 포함된 모든 .sh 스크립트의 경우에 해당됩니다.

zsh script_name.sh

위의 내용이 기능 측면에서 효과가 있을 것이라는 것을 알고 있지만 마이그레이션에 대한 조언과 모범 사례를 찾고 있습니다. 이상적으로는 내 테마, 자동 완성 및 Git 분기 설정(위의 ~/.bash_profile에 표시된 대로)이 지금과 동일한 방식으로 작동하기를 바랍니다.

테마로는 'oh-my-zsh'라는 플러그인도 있는 것으로 알고 있습니다. 설치하는 것이 권장됩니까?

도와 주셔서 감사합니다!

답변1

나는 zsh에 순수 테마를 사용하기로 결정했습니다. 내 스크립트는 정상적으로 작동하며 이제 zsh를 통해 실행됩니다. 내 ~/.zshrc 파일은 다음과 같습니다.

# PATHS AND ALIASES
# searches this directory for executables first
export PATH="/usr/local/bin:$PATH"

# jenv
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"

# rbenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

# pyenv
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"

# nodenv
export PATH="$HOME/.nodenv/bin:$PATH"
eval "$(nodenv init -)"

# node-build-definitions
export NODE_BUILD_DEFINITIONS="/usr/local/opt/node-build-update-defs/share/node-build"

# firevault memory security
alias sleepsafe='sudo pmset -a destroyfvkeyonstandby 1 hibernatemode 25 standby 0 standbydelay 0'
alias sleepdefault='sudo pmset -a destroyfvkeyonstandby 0 hibernatemode 3 standby 1 standbydelay 10800'

# enable / disable captive portal
alias disablecaptiveportal='sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.captive.control Active -bool false'
alias enablecaptiveportal='sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.captive.control Active -bool true'

# CLI SETTINGS
# enable the default zsh completions
autoload -Uz compinit && compinit

# set colors for displaying directories and files when the ls command is used
export LSCOLORS='GxFxCxDxBxegedabagaced'
export CLICOLOR=1

# theme
fpath+=("$HOME/.zsh/pure")
autoload -U promptinit && promptinit
prompt pure

# change the path color
zstyle :prompt:pure:path color white

관련 정보