Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

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

$
0
0

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

Viewing all articles
Browse latest Browse all 2722

Trending Articles