そのため、bashのマニュアルページでは、ログインシェルとインタラクティブシェルについて説明しています。
ログインシェルは、引数ゼロの最初の文字が-であるシェル、または--loginオプションで開始されたシェルです。
対話型シェルは、非オプション引数なしで起動され、標準入力とエラーの両方が端末に接続されている(isatty(3)によって決定される)-cオプションなしで起動されるシェル、または-iオプションで起動されるシェルです。PS1が設定され、bashが対話型の場合は$-にiが含まれ、シェルスクリプトまたはスタートアップファイルでこの状態をテストできます。
これは、4種類のシェルを使用できることを意味すると思います。
- 対話型ログインシェル、
- 非対話型ログインシェル、
- 対話型の非ログインシェル、
- 非対話型の非ログインシェル
しかし、そもそもなぜ対話型/非対話型およびログイン/非ログインシェルがあるのでしょうか?なぜさまざまなのですか?シェルが1種類しかない場合、何が失われますか?
また、実行してログインシェルにいるかどうかを判断しようとするとecho $-
、次のように出力されます。
himBH
これらのフラグのいくつかは説明されているここでは、しかしh
、H
とm
説明されていません。これらすべてのフラグを説明する場所はありますか?