torutkのブログ

ソフトウェア・エンジニアのブログ

環境設定/etc/profile.d/

最近、Linuxに、/etc/profile.d/なるディレクトリのあることを知りました。中を見ると、vim.csh, vim.sh, kde.csh, kde.shといったファイルがあります。vimでは、alias vi=vimの設定が書かれており、各ユーザはログインすると自分の環境設定に何も記述していなくても、viと叩けばvimが起動されるようになっていたのです。

  • /etc/profile.d/vim.sh
if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
  [ -x /usr/bin/id ] || return
  [ `/usr/bin/id -u` -le 100 ] && return
  # for bash and zsh, only if no alias is already set
  alias vi >/dev/null 2>&1 || alias vi=vim
fi

シェルの初期化

man bashによると、シェル起動時の環境設定読み込み制御は以下のとおりです。

  • /etc/profileがあれば読み込む
  • シェルがログインシェルとして起動されたか否か
    • ログインシェルとして起動された場合、~/.bash_profileか~/.bash_loginか~/.profileの最初に見つかったファイルを読み込み
    • 非ログインシェルの場合、~/.bashrcを読み込み

CentOS 5の/etc/profileを見ると、最後に以下の処理をしています。

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        . $i
    fi
done

なるほど、こうしておけば、アプリケーション毎に特有の設定を別々なファイルに記述できるので、パッケージをインストールするときに、この/etc/profile.d/の下に置くようにすれば、便利ですね。