Migración de bash a zsh para Mac OS Catalina

Migración de bash a zsh para Mac OS Catalina

Como algunos de ustedes sabrán, después de actualizar a Mac OS Catalina, Apple solicita a los usuarios que migren a zsh como shell predeterminado.

Ahora, aparece una advertencia cada vez que se abre bash. Se puede desactivar agregando la línea siguiente a su ~/.bash_profile (para aquellos interesados).

export BASH_SILENCE_DEPRECATION_WARNING=1

Sin embargo, me imagino que muchos (incluyéndome a mí) queremos pasar a zsh.

Mi ~/.bash_profile actual se parece a continuación:

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

Esperaba que alguien con más conocimientos que yo pudiera ayudarme a comprender qué va y dónde, ya que parece haber información contradictoria en línea.

Hasta ahora, por lo que he leído, aquí están las diferentes sugerencias que he visto:

  1. Copie y pegue ~/.bash_profile en ~/.zshrc.
  2. Agregando el siguiente código en la parte inferior de ~/.zshrc:
if [ -f ~/.bash_profile ]; then 
    . ~/.bash_profile;
fi
  1. Crear un archivo ~/.aliases y un archivo ~/.paths y luego obtenerlos/importarlos tanto a ~/bash_profile como a ~/.zshrc para mantener la compatibilidad con versiones anteriores.

Además de esto, tengo un script .sh que se ejecuta todos los días automáticamente mediante un comando como:

sh script_name.sh

¿Debería cambiar esto para usar zsh como se muestra a continuación? Este debería ser el caso si todos los scripts .sh con bash y zsh.

zsh script_name.sh

Busco consejos y mejores prácticas para la migración, aunque sé que cualquiera de los anteriores funcionaría en términos de funcionalidad. Idealmente, me gustaría que mi tema, los autocompletados y la configuración de la rama git (como se muestra en ~/.bash_profile arriba) funcionen de la misma manera que ahora.

Para el tema, sé que también hay disponible un complemento llamado 'oh-my-zsh'. ¿Se recomienda instalar esto?

¡Gracias por la ayuda!

Respuesta1

Decidí usar el tema puro para zsh. Mis scripts funcionan normalmente, ahora simplemente se ejecutan a través de zsh. Así es como se ve mi archivo ~/.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

información relacionada