ユーザープロセスは/etc/passwdで書かれているシェルの子プロセスです。
シェルの初期ファイルはパスを修正することがあります。
ログインではシェルの名前は-を前置きします。例えばbashは-bashのよう にして呼ばれます。これはシェル(つまりloginシェル)にシグナルを送ります。 この場合、シェルはlogin初期化ファイルを実行します。そうでなければ ある 初期化が実行されます。
加えてシェルはそれがインタラクティブかどうかチェックします - ファイルや インタラクティブなttyからのコマンドです。これはシェルの初期化を修正して、 その結果インタラクティブではない(non-interactive)non-loginシェルが 初期化されます。bashはここではなんの初期化ファイルも実行しません。
通常のloginシェルとして、bashはシステム広範(system-wide)のファイル
/etc/profileを使い(sources)ます。このファイルはシステム環境と
パスをbashユーザー用にセットします。しかしシステムがnon-interactiveとして
実施された時はこれは実行されません。もっとも重要なケースは、隣りのマシンで
実行されるリモートコマンドがrshで行われた場合です。/etc/profileは
実行されずパスはrshデーモンから継承されています。
bashはコマンドライン引数-loginと-iを受け取ります。この
引数はそれぞれloginシェルあるはインタラクティブ(interactive)シェルとして
シェルをセットするのに使われます。
ユーザーは~/.bash_profile, ~/.bash_login、~/.profile
ファイルを作ることで/etc/profileでセットされている値を上書きする
ことができます(つまりユーザーの設定)。
これらのファイルのひとつめ(~/.bash_profile)はcsh初期化の
ロジックと違うことに注意して下さい。~/.bash_loginは
loginシェルに関しては特に何も実行せず、また.bash_profileがあると
きは全く実行されません!
もしbashが"bash"という名前の代わりにshとう名前として使用されて
いると、オリジナルのBourne shell初期化をエミュレートします:その際のファイル
は/etc/profile、~/.profileそしてloginシェル用の
ものです。
loginシェルとしてtcshは以下のファイルをこの順に実行します:
/etc/csh.cshrc/etc/csh.login~/.tcshrc~/.cshrc(もし.tcshrcが見つからない時)~/.history~/.login~/.cshdirstcshはcshrcスクリプトの前にloginスクリプトを実行するように組み込めること にも注意して下さい!
インタラクティブでないシェルは*cshrcスクリプトを実行します。*login
スクリプトはloginで一回だけパスをセットするのに使われます。