web-dev-qa-db-ja.com

対話型シェル、ログインシェル、非ログインシェル、およびそれらの使用例の違いは何ですか?

重複の可能性:
ログインシェルと非ログインシェルの違い?

/ etc/profileを見てきました。 bash.bashrcを実行して、それらがどのように実行されるかを確認します。一部は非ログインシェルによって実行され、一部はインタラクティブシェルで動作することに注意してください。

このタイプのシェルの違いは何ですか、つまり対話型と非対話型、ログインと非ログインなどです。

質問はかなり基本的なものかもしれませんが、何よりもまずシェルとは何かを尋ねる必要があるようです。シェルとは何ですか、その関連性は何ですか、それをどのように使用しますか。また、最初からシェルが存在するのはなぜですか。

更新:質問の意図をよりよく理解するために、定義のほかに理解する必要があるのは、シェルまたは他のタイプの使用例です。辞書の定義だけでなく、理解に役立つのはユースケースです。

85
vfclists

シェルは、コンピューターと対話するためのテキストインターフェイスを提供するプログラムの総称です。コマンドを入力すると、出力が画面に表示されます。

多くのシェルはスクリプト機能を備えています。スクリプトに複数のコマンドを入力すると、シェルはキーボードから入力されたかのようにそれらを実行します。ほとんどのシェルは、スクリプト機能をプログラミング言語に拡張する追加のプログラミング構造を提供します。

ほとんどのUnix/Linuxシステムでは、複数のシェルを使用できます。いくつか例を挙げると、bash、csh、ksh、sh、tcsh、zshです。これらは、ユーザーがコマンドを操作するためのさまざまなオプションと、スクリプト言語の複雑さと機能が異なります。

インタラクティブ:用語の意味:インタラクティブとは、コマンドがキーボードからのユーザー操作で実行されることを意味します。例えば。シェルはユーザーに入力を促すことができます。

非インタラクティブ:シェルはおそらく自動化されたプロセスから実行されるため、入力を要求できるかどうか、または誰かが出力を見ることができるかどうかは想定できません。たとえば、ログファイルに出力を書き込むのが最適な場合があります。

Login:ユーザーのシステムへのログインの一部としてシェルが実行されることを意味します。通常、ユーザーが自分の作業環境を確立するために必要な、または必要とする構成を行うために使用されます。

Non-login:ログオン後にユーザーによって実行された、またはログインしたユーザーに関連付けられていない自動プロセスによって実行されたその他のシェル。

98
Tonny

コンプをインターネットから切断したことがない人にとっては、UNIXシステムに関する多くの回答がすでに同梱されていることを理解するのは奇妙なことかもしれません。 eの場合g。、 man bash 、 "Invocation"セクション:

対話型シェルは、非オプション引数なしで-cオプションなしで開始され、その標準入力とエラーの両方が端末に接続されている(isatty(3)によって決定される)か、または-iオプションで開始されます。 PS1が設定され、bashがインタラクティブな場合は$-にiが含まれ、シェルスクリプトまたはスタートアップファイルでこの状態をテストできます。

11
poige