
UNIX: The Complete Reference、第 2 版、Kenneth H. Rosen 他著
ログイン後に、シェル名をコマンドとして使用して別のシェルを起動できます。たとえば、Korn シェルを起動するには、コマンド プロンプトで ksh と入力します。このタイプのシェルはログイン シェルではないため、使用するために再度ログインする必要はありませんが、対話型シェルであることに変わりはありません。つまり、コマンドを入力してシェルと対話します (第 20 章で説明したように、シェルを使用してスクリプトを実行するのとは対照的です)。グラフィカル インターフェイスを使用しているときにターミナル ウィンドウで実行されるシェルのインスタンスも、対話型の非ログイン シェルです。非ログイン シェルを起動すると、.profile、.bash_profile、.login ファイル (または .logout ファイル) は読み込まれませんが、2 番目のシェル構成ファイル (.bashrc など) は読み込まれます。つまり、シェルの別のインスタンスを起動して .bashrc への変更をテストできますが、.profile または .login への変更をテストする場合は、結果を確認するためにログアウトしてから再度ログインする必要があります。
上記の行を読んでいたのですが、インタラクティブ シェルの意味がわかりません。ターミナルを使用している場合、.profile は読み込まれないというのは本当ですか?
さらに、bash/csh は対話型シェルであるのに対し、bourne は対話型シェルではないというのはどういう意味ですか?
答え1
対話型シェルとは、コマンドを入力して、そのコマンドからの出力を取得するために使用するシェル プロセスのことです。つまり、対話するシェルです。
したがって、質問で引用した抜粋で説明されているように、ログイン シェルは、手動で起動する他のシェルと同様に対話型です。対照的に、シェル スクリプトを実行すると、スクリプト内のコマンドを実行する非対話型シェルが起動し、スクリプトが終了すると終了します。
bash
Bourne シェルは、やと同様に、対話型シェルとして使用できますtcsh
。実際、FreeBSD などの多くのシステムでは、 がsh
デフォルトのユーザー シェルとして使用されています。 、 、 などの最新のシェルには、bash
Bournezsh
シェルtcsh
にはない多くの機能があり、対話型の使用においてより快適で便利です (コマンド履歴、補完など)。
対話型の非ログイン シェル (つまり、別のシェルから手動で起動するか、ターミナル ウィンドウを開いて起動するシェル) は、.login
または.profile
ファイルを読み取りません。これらは、ログイン シェル (login
システム プロセスまたは X ディスプレイ マネージャーによって起動されるシェル) によってのみ読み取られて実行されるため、そこに含まれるコマンドと設定は、ログイン セッションの開始時に 1 回だけ適用されます。したがって、ターミナルを起動すると、自動的に生成されるシェルはログイン ファイル ( .login
C スタイル シェルの場合は 、 Bourne スタイル シェルの場合は ) を読み取りませんが、 、などのファイル.profile
を読み取ります。.cshrc
.bashrc