重複の可能性:
ログインシェルと非ログインシェルの違いは何ですか?
私は/etc/profile
それらがどのよう/etc/bash.bashrc
に実行されているかを調べてきましたが、いくつかは非ログインシェルによって実行され、いくつかはインタラクティブシェルで動作するように見えました。
このタイプのシェル(対話型と非対話型、ログイン、非ログインなど)の違いは何ですか?
この質問は非常に基本的かもしれませんが、シェルが何であるかを最初に尋ねる必要があるようです。シェルとは何か、関連性は何であり、どのように使用し、なぜ存在するのですか?
更新:質問の意図をよりよく理解するには、定義に加えて、1つまたは別のシェルのユースケースを理解する必要があります。単純な事前定義ではなく、理解を助けるユースケースです。
答え1
シェルは、コンピュータと対話するためのテキストインタフェースを提供するすべてのプログラムの一般名です。コマンドを入力すると、出力が画面に表示されます。
多くのシェルにはスクリプト機能があります。複数のコマンドをスクリプトに入れると、シェルはキーボードで入力したようにそのコマンドを実行します。ほとんどのシェルは、スクリプト機能をプログラミング言語に拡張する追加のプログラミング構成を提供します。
ほとんどのUnix / Linuxシステムでは、bash、csh、ksh、sh、tcsh、zshなど、複数のシェルを使用できます。ユーザーにコマンド操作のさまざまなオプションを提供し、スクリプト言語の複雑さと機能が異なります。
インタラクティブ:名前が示すように、インタラクティブは、キーボードを介したユーザーの対話を通じてコマンドが実行されることを意味します。たとえば、シェルはユーザーに入力を要求できます。
非対話型:シェルは自動化されたプロセスで実行できるため、入力を要求したり、誰かが出力を表示したりすることはできません。たとえば、出力をログファイルに書き込む方が良いかもしれません。
ログイン:これは、シェルがユーザーログインシステムの一部として実行されることを意味します。通常、ユーザーが作業環境を設定するために必要な、または必要な構成を実行するために使用されます。
非ログイン:ユーザーがログインした後に実行またはログインしたユーザーに関連付けられていない自動化されたプロセスによって実行される他のすべてのシェル。
答え2
インターネットからコンピュータを切断したことがない人の中には、UNIXシステムに対する多くの回答が付属しているという事実が奇妙に思えるかもしれません。例えば、男乱交、「通話」部分:
対話式シェルは、オプションではなく引数を取らず、-cオプションなしで標準入力とエラーが端末に接続されているか(isatty(3)によって決まります)、-iオプションで始まるシェルです。 bashが対話型の場合、PS1が設定され、$ -にiが含まれているため、シェルスクリプトまたは起動ファイルがこの状態をテストできます。