「echo$-」の出力を理解する方法は?

「echo$-」の出力を理解する方法は?

出力を理解する方法はecho $-?一種の国旗キャラクターのように見えます。グーグルしても手がかりが見つかりません。

答え1

これはシェルフラグの値を表します。POSIXで定義:

-

set(ハイフン)呼び出し時に指定された特別な組み込みコマンドを介して、またはシェルによって暗黙的に現在のオプションフラグ(文字列で連結された単一文字オプション名)に拡張されます。

これzsh マニュアル簡単に言及:

-set<S>呼び出されたときまたはコマンドを介してシェルに提供されるフラグsetopt

〜のようにバッシュマニュアル説明からset

現在のオプションセットはで見つけることができます$-

出力を理解するには、echo $-シェルのマニュアルでオプションを探す必要があります。たとえば、Bashのecho $-出力とは、オプションが有効になっている(詳細については参考文献を参照)、シェルが対話型()であり、標準入力()から読み取られることを意味しますhimBHs-h-m-B-Hhelp set-i-s

答え2

~からバッシュリファレンスマニュアル:

settings [+abefhkmnptuvxBCEHPT] [+o オプション名] [arg...]

オプションがない場合、各シェル変数の名前と値は、現在設定されている変数を設定またはリセットするための入力として再利用できる形式で表示されます。

...

特に明記しない限り、これらのオプションはデフォルトでオフになっています。 - 代わりに+を使用すると、これらのオプションはオフになります。オプションは、シェル呼び出しの引数として指定することもできます。 現在のオプションセットは$-にあります。 無効なオプションが発生しない限り、戻り状態は常に true です。

関連情報