bashrcを環境ごとに異なる設定にする書き方
OS、ディストリビューション、ホスト、ターミナルごとに異なる設定を行う場合の書き方まとめ
(それとbashrcが長くなりすぎる場合の他ファイルへの分割の仕方)
OSごとに固有の設定
OSによる場合分けはunameで判定する
case `uname -a` in
Darwin* )
# Darwin(MacOS)に固有の設定はここに書く
# 例)brew
[ -f "/usr/local/bin/brew" ] && export HOMEBREW_CASK_OPTS="--appdir=/Applications"
;;
Linux* )
# Linuxに固有の設定はここに書く
;;
MINGW* )
# WindowsのMINGWに固有の設定はここに書く
;;
esac
Linuxのディストリビューションごとに固有の設定
ディストリビューションは/etc/os-releaseのNAMEの値で判定する
if [ -f "/etc/os-release" ]; then
read line < /etc/os-release && eval ${line}
case ${NAME} in
"CentOS Linux" )
# CentOSに固有の設定はここに書く
;;
"Ubuntu" )
# Ubuntuに固有の設定はここに書く
export LANG="en_US.utf8"
export LC_ALL="en_US.utf8"
;;
* )
# その他の設定はここに書く
;;
esac
fi
ホスト(端末)ごとに固有の設定
ホストごとに固有の設定はHOSTNAMEで判定する
case ${HOSTNAME} in
homePC )
# 自宅PCに固有の設定はここに書く
;;
officePC )
# 会社PCに固有の設定はここに書く
# 例)プロキシ設定
export http_proxy="~~"
export https_proxy="~~"
export ftp_proxy="~~"
;;
192-168* )
# 例)192-168で始まるホスト名に固有の設定はここに書く
;;
esac
ターミナルの種類ごとに固有の設定
ターミナルに固有の設定はTERMで判定する
下記は$TERMがxterm-colorか-256colorを含む場合に色をつける設定の例
case "$TERM" in
# カラー対応の端末ならフラグを立てる
xterm-color|*-256color) color_prompt=yes;;
esac
if [ "$color_prompt" = yes ]; then
# カラー端末用のプロンプト(レポジトリ名も表示する)
PS1='\[\e[1;36m\]$(__git_ps1 "(%s)")\[\e[1;32m\]\u\[\e[0;32m\]@\h:\[\e[1;33m\]\W \[\e[00m\]\$ '
else
# モノクロ端末用のプロンプト
PS1='\u@\h:\W \$ '
fi
unset color_prompt force_color_prompt
bashrcが長くなる場合は他ファイルに分割する
例としてホストごとに固有の設定を他のファイルに書く場合、
bashrc内で自動的にファイル名を特定できるよう、ファイル名を「.bash_ホスト名」としておく。
実際に読み込む部分は下記の通り。
同様にOSごとやディストリビューションごとの設定も他ファイルに分割できる。
# .bash_${HOSTNAME}のファイルが存在すればそれを読み込む
[[ -f "${HOME}/.bash_${HOSTNAME}" ]] && source "${HOME}/.bash_${HOSTNAME}"