rcmdnk's blog

ソース~あなたの人生の源は、ワクワクすることにある。

dotfiles 等を使って.bashrcなどの設定ファイルを共通で管理することが流行ってますが、 使う環境によって設定を変えたいことがあります。

少しのことであれば.bashrcの中で環境に沿って分岐を作って書いたりしても良いかもしれませんが、 共通のファイルはなるべく綺麗にしておきたいので 個別の設定は別のファイルに書いてそれを読み込む様にしています。

その際のちょっとした工夫などについて。

source_file

以下の様な関数を.bashrc/.zshrcの最初の方で定義しておきます。

.bashrc
1
2
3
4
5
6
7
8
9
10
11
function source_file {
  if [ $# -lt 1 ];then
    echo "ERROR!!! source_file is called w/o an argument"
    return
  fi
  arg="$1"
  shift
  if [ -r "$arg" ]; then
    source "$arg"
  fi
}

この関数では与えられたファイルがあって読み込み可能ならsourceし、 そうでない場合は何もしません。

これを使って以下の様な設定を書いています。

.bashrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Source system bashrc
source_file /etc/bashrc

....

# File used in linux
[[ "$OSTYPE" =~ linux ]] && source_file ~/.linuxrc

# File used in mac
[[ "$OSTYPE" =~ darwin ]] && source_file ~/.macrc

# File used in windows (cygwin)
[[ "$OSTYPE" =~ cygwin ]] && source_file ~/.winrc

# File for special settings for each machine
source_file ~/.localrc

/etc/bashrcの読み込みは.bashrcで他の設定をする前の最初の方、 他のファイルに関しては一番最後に書いています。

/etc/bashrcは大概のシステムにありますが そのシステムにおいて読み込んでおくと便利なものが多いのであれば読み込みます。

.linuxrc.macrc.winrcは それぞれLinux、Mac、Windows (Cygwin)用の設定ファイルで これらは dotfiles で管理していてどの環境にも置かれるようになってます。 (ただし現状.linuxrcはありません。)

なのでOSTYPEでチェックしてその環境にある時にsourceしています。

最後の.localrcは個別の環境で必要な設定で、 必要がある場合はこのファイルを作って中に設定を書きます。 これは dotfiles とは独立にその場で作ることになります。

必要がない環境ではファイルを作らなければ上の関数によって何も読まれないままになるだけです。

Sponsored Links
Sponsored Links

« .bashrc/.zshrcを再読込した際にPATHを余計に追加しないようにする方法 AppleScriptでfolderが使えなくなった? »

}