次のページ 前のページ 目次へ

6. シェル

ユーザープロセスは/etc/passwdで書かれているシェルの子プロセスです。 シェルの初期ファイルはパスを修正することがあります。

ログインではシェルの名前は-を前置きします。例えばbashは-bashのよう にして呼ばれます。これはシェル(つまりloginシェル)にシグナルを送ります。 この場合、シェルはlogin初期化ファイルを実行します。そうでなければ ある 初期化が実行されます。

加えてシェルはそれがインタラクティブかどうかチェックします - ファイルや インタラクティブなttyからのコマンドです。これはシェルの初期化を修正して、 その結果インタラクティブではない(non-interactive)non-loginシェルが 初期化されます。bashはここではなんの初期化ファイルも実行しません。

6.1 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シェル用の ものです。

6.2 tcsh

loginシェルとしてtcshは以下のファイルをこの順に実行します:

tcshはcshrcスクリプトの前にloginスクリプトを実行するように組み込めること にも注意して下さい!

インタラクティブでないシェルは*cshrcスクリプトを実行します。*login スクリプトはloginで一回だけパスをセットするのに使われます。


次のページ 前のページ 目次へ