web-dev-qa-db-ja.com

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を使用するように変更する必要がありますか?これは、すべての.shスクリプトがbashおよびzshを使用する場合に当てはまります。

zsh script_name.sh

上記のいずれも機能的に機能することはわかっていますが、移行に関するアドバイスとベストプラクティスを探しています。理想的には、私のテーマ、オートコンプリート、およびgitブランチの設定(上記の〜/ .bash_profileに示されている)が現在と同じように機能するようにします。

テーマについては、「oh-my-zsh」というプラグインも利用できることを知っています。これはインストールすることをお勧めしますか?

お手伝いありがとう!

2
philosopher

私は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
3
philosopher