ご存知の方もいるかもしれませんが、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'
ネット上には矛盾した情報があるようなので、私よりも知識のある人が、どこに何があるのか理解するのを手伝ってくれることを期待しています。
これまでに私が読んだものから、私が目にしたさまざまな提案は次のとおりです。
- ~/.bash_profile を ~/.zshrc にコピーして貼り付けます。
- ~/.zshrc の下部に次のコードを追加します。
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile;
fi
- 下位互換性を維持するために、~/.aliases ファイルと ~/.paths ファイルを作成し、それらを ~/bash_profile と ~/.zshrc の両方にソース/インポートします。
これに加えて、次のようなコマンドで毎日自動的に実行される .sh スクリプトがあります。
sh script_name.sh
これを以下のように zsh を使用するように変更する必要がありますか? これは、すべての .sh スクリプトが bash と zsh の場合に当てはまります。
zsh script_name.sh
機能的には上記のいずれも機能することはわかっていますが、移行に関するアドバイスとベスト プラクティスを探しています。理想的には、テーマ、オートコンプリート、git ブランチ設定 (上記の ~/.bash_profile に示されている) が現在と同じように機能することを望みます。
テーマについては、「oh-my-zsh」というプラグインも利用できると知っています。これをインストールすることをお勧めしますか?
お手伝いありがとう!
答え1
私は zsh に pure テーマを使用することにしました。スクリプトは通常どおり動作し、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