LoginSignup
8
7

More than 3 years have passed since last update.

bashrcをOS等の環境ごとに異なる設定にする書き方

Last updated at Posted at 2019-10-25

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}"
8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7