Migrando do bash para zsh para Mac OS Catalina

Migrando do bash para zsh para Mac OS Catalina

Como alguns de vocês devem saber, após a atualização para o Mac OS Catalina, a Apple está solicitando que os usuários migrem para o zsh como shell padrão.

Agora, há um aviso que surge toda vez que o bash é aberto. Ele pode ser desativado adicionando a linha abaixo ao seu ~/.bash_profile (para os interessados).

export BASH_SILENCE_DEPRECATION_WARNING=1

No entanto, imagino que muitos (inclusive eu) desejam migrar para o zsh.

Meu ~/.bash_profile atual se parece com o seguinte:

# 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'

Eu esperava que alguém com mais conhecimento do que eu pudesse me ajudar a entender o que acontece, já que parece haver algumas informações conflitantes online.

Até agora, pelo que li, aqui estão as diferentes sugestões que vi:

  1. Copie e cole ~/.bash_profile em ~/.zshrc.
  2. Adicionando o seguinte código na parte inferior de ~/.zshrc:
if [ -f ~/.bash_profile ]; then 
    . ~/.bash_profile;
fi
  1. Criar um arquivo ~/.aliases e um arquivo ~/.paths e, em seguida, obtê-los/importá-los para ~/bash_profile e ~/.zshrc para manter a compatibilidade com versões anteriores.

Além disso, tenho um script .sh que é executado todos os dias automaticamente por meio de comandos como:

sh script_name.sh

Devo mudar isso para usar zsh como mostrado abaixo? Este deve ser o caso se todos os scripts .sh com bash e zsh.

zsh script_name.sh

Procurando conselhos e práticas recomendadas para migração, embora saiba que qualquer uma das opções acima funcionaria em termos de funcionalidade. Idealmente, gostaria que meu tema, preenchimento automático e configurações de branch git (conforme mostrado em ~/.bash_profile acima) funcionassem da mesma maneira que agora.

Para o tema, sei que também existe um plugin chamado ‘oh-my-zsh’. É recomendado instalar isso?

Obrigado pela ajuda!

Responder1

Decidi usar o tema puro para zsh. Meus scripts funcionam normalmente, eles apenas rodam via zsh agora. Esta é a aparência do meu arquivo ~/.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

informação relacionada