インタラクティブシェルとはどういう意味ですか?


25

UNIX:The Complete Reference、Second Edition by Kenneth H.Rosen et al。

ログイン後にシェルの名前をコマンドとして使用して、別のシェルを起動できます。たとえば、Kornシェルを起動するには、コマンドプロンプトでkshと入力できます。このタイプのシェルはログインシェルではなく、使用するために再度ログインする必要はありませんが、それでも対話型シェルです。つまり、コマンドを入力することでシェルと対話します(シェルを使用する代わりに)第20章で説明されているように、スクリプトを実行します。グラフィカルインターフェイスを使用しているときにターミナルウィンドウで実行されるシェルのインスタンスも、対話型の非ログインシェルです。非ログインシェルを起動すると、.profile、.bash_profile、または.loginファイル(または.logoutファイル)は読み込まれませんが、2番目のシェル構成ファイル(.bashrcなど)は読み込まれます。これは、変更をテストできることを意味します。

私は上記の行を通り抜けていましたが、それがインタラクティブシェルによって何を意味するのか分かりません。ターミナルを使用している場合、.profileが読み取られないのは本当ですか?

さらに、bourneはインタラクティブシェルではなく、bash / cshはインタラクティブシェルであると言うとき、それはどういう意味ですか?

回答:


27

対話型シェルとは、単にコマンドを入力し、それらのコマンドから出力を取得するために使用する任意のシェルプロセスです。つまり、対話するシェルです。

したがって、質問で引用した抜粋で説明されているように、ログインシェルは手動で起動する他のシェルと同様に対話型です。対照的に、シェルスクリプトを実行すると、スクリプト内のコマンドを実行する非対話型シェルが開始され、スクリプトが終了すると終了します。

Bourneシェルは、bashまたはのように対話型シェルとして使用できますtcsh。実際、FreeBSDなどの多くのシステムはsh、デフォルトのユーザーシェルとして使用します。現代のシェルが好きbashzshtcsh、などの対話的な使用(コマンド履歴、完了など)のためにそれらをより快適で便利にするBourneシェルを持っていないことを多くの機能を持っています。

対話型の非ログインシェル(つまり、別のシェルから手動で起動したシェル、またはターミナルウィンドウを開いて起動したシェル)は、ユーザー.loginまたは.profileファイルを読み取りません。これらは、ログインシェル(loginシステムプロセスまたはXディスプレイマネージャーによって起動されるシェル)によってのみ読み取られ、実行されるため、それらに含まれるコマンドと設定は、ログインセッションの開始時に1回だけ適用されます。そのため、ターミナルを起動すると、ターミナルが起動するシェルはログインファイルを読み取りません(.logincスタイルシェル、.profilebourneスタイルシェルの場合)が.cshrc.bashrcなどのファイルを読み取ります。


シェルを非対話型ログインシェルとして実行することは可能です。
jw013

本当ですが、混乱を招く可能性があります!
-D_Bye

kshも最新のシェルです:-) www2.research.att.com/sw/downloadを参照し、左側のマージンのメニューを使用してAST-> ksh-> overviewに移動します。年に数回、David KornとGlen Fowlerから新しいリリースがリリースされます。皆さんお元気で。
シェルター

1
@shellter-はい、確かに。しかし、これは私が今まで使用したものではなく、どこかでシェルの列挙を停止する必要がありました!;-)
D_Bye

あなたは言ったThe Bourne shell can be used as an interactive shell, just like bash or tcsh. と同じBourneシェルではないですかbash
Mr.Web
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.