と入力してシェル組み込みコマンドセットを見つけhelp set
、簡単な構文の説明が表示されました。
settings [-abefhkmnptuvxBCHP] [-o オプション名] [--] [arg...]
ヘルプ記事では、$変数はsetコマンドを使用して設定されたすべての現在のパラメータを保持していると説明しています。
したがって、echo $-
シェルのすべてのパラメータ設定が表示されます。私のものは次のとおりです。
力BH
すべての文字は、ドキュメントと上記の短い構文の説明に記載されていますが、1つが欠落しています。私オプション。i
set
Bashのパラメータは何を意味しますか?
ベストアンサー1
これはi
、シェルが対話型であることを意味します。
これはマンページセクションシェルの相互作用の例を論議しなさい:
対話型シェルはオプションではなく、引数やオプションなしで
-c
始まるシェルであり、標準入力とエラーの両方が端末(によって決まるisatty(3)
)に接続されているか、-i
このオプションで始まるシェルです。対話型かどうかをPS1
設定し、$-
シェルスクリプトまたは起動ファイルがこの状態をテストできるようにします。i
bash
シェルの対話型属性は初期化中に決定され、その効果はシェルの存続期間中は変更されません。これがフラグが変更可能であると報告されないset
理由ですi
。 Bash バージョン 4.3 ではset -i
or が許可されていますが、set +i
内部的にフラグを変更する以外には何の効果もありませんforced_interactive
(フラグは初期化中にのみ読み込まれます)。バージョン 4.4 ではエラーメッセージが生成されます。フラグ処理の詳細は次のとおりです。flags.c
Bashのソースコードから。