シェルの設定ファイル ( sh, bash )

世の中にはbashの情報は溢れているけど、今やshの情報はなかなか見つからない!そんなの困るよ!!
/bin/shbashへのリンクを張った場合など、bashがshのように働く場合があるらしいし、未だにshを使うところはたくさんあるはずだよね!
というわけで、shを使った場合の設定ファイルについて記事にしてみたよ!不足情報がたくさんあるはずなので、ツッコミいただけると喜ぶよ!

Bourne-Shell (not bash, but sh)

sh の設定は、ログイン時にまず
/etc/profile
が適用され、続いて各ユーザのディレクトリの .profile (つまり、~/.profile)が適用されるよ!
/etc/profileは誰にでも効果を及ぼすので、基本的なコマンドへのパスを通しておくとかそういう使い方をするといいんじゃないかな!
ちなみに sh での環境変数の通し方は、

<VARIABLE>=<VALUE>
export <VARIABLE>

で完了だよ!当たり前すぎたかな!


ユーザを新しく作るごとにいちいちホームディレクトリに.profileを作るのは面倒くさいよね!そういうときは、とりあえずテンプレートを /etc/skel/profile*1 に作っておくのが作法らしいよ!こっちは先頭ドットのないファイルだよ!

Bourne-Again-Shell (yes bash)

shだけだと記事としてそんなに面白くないので、bashの設定ファイルについても書いておくよ。


bashでも、ログイン時に真っ先に適用されるのは
/etc/profile
で、続いて ~/.bash_profile ファイルが評価される。ログイン時に評価されるのは以上の二つ。*2
似たようなファイルに ~/.bashrc があるけれども、こちらはログイン時ではなく、シェル起動時に毎回評価されるもの。ちょっとしたテストを行ってみたけど、ログイン時は新しいシェルを呼び出しているとは判断されないみたいで ~/.bashrc は呼び出されなかった*3。 ~/.bash_profile から ~/.bashrc を呼び出すことはやっておいた方が良いよ。

# in .bash_profile
if [ -e "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc
fi

ちなみに@ITの人は、 ~/.bash_profile は ~/.bashrc を呼び出すだけにしておいて、設定は全部 ~/.bashrc に書いているそうな。それがいいかもなぁ。
ちなみにbashだと、shのように二文に分ける必要はなくて、

export <VARIABLE>=<VALUE>

と書くだけでexport出来る。

.bashrcなどの適用について。追記 @ 2008/05/20

.bashrcとかを書いたけれど、ログアウトせずに適用したいときはどうするか、という話。
.bashrcとかは単なるシェルスクリプトなので、ファイルの実行権限があるなら

$ ~/.bashrc

とするだけで適用されます。権限がないなら chmod +x ~/.bashrc; ~/.bashrc とかすればいいかも。
実行権限を変更するのが面倒なら

$ bash ~/.bashrc

とか

source .bashrc

などと実行させちゃえばOK、だと思うよ。


つか、shについてもbashについてもman見たら全部書いてあるよ。ネットばかり見てると馬鹿になる、を証明してしまった。
以下参考リンク集。
http://docs.hp.com/ja/B2355-60104-08/profile.4.html
http://docs.sun.com/app/docs/coll/153.13
http://jo1upk.blogdns.net/linux/?Linux%2F%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AE%E8%A8%AD%E5%AE%9A
http://www.atmarkit.co.jp/flinux/rensai/theory09/theory09b.html
http://home.t00.itscom.net/happy7/solaris/bash.htm

*1:OS依存

*2:~/.bash_profileがなかった場合はまた別のものを探すらしいけど、略

*3:ただし実験環境はCygwin