「$-」の「s」とは何ですか?

「$-」の「s」とは何ですか?

私が普段よく知っている内容$-。最近のCentOSでは、次のようになります。

[grochmal@orion ~]$ echo $-
himBH

hmBH両方のオプションから来て、私のシェルがインタラクティブであることを意味しますseti

しかし、私のArch Linuxでは、次のようになります。

[grochmal@haps ~]$ echo $-
himBHs

役に立つものが見つからず、エラーが発生しますman bashset -sこれはどういうs意味ですか?

ベストアンサー1

この-sオプションは、「標準入力」の「sourceコマンド」を意味するbash start callです-s。マニュアルから:

-s -sオプションがある場合、またはオプション処理後に残りの引数がない場合は、標準入力からコマンドを読み取ります。このオプションを使用すると、対話型シェルを呼び出すときに位置パラメータを設定できます。

テストするのはとても簡単です。

$ bash -c 'echo $-'
hBc

$ bash -sc 'echo $-'
hBcs

デフォルトでは、以前のすべてのbashバージョンに対して新しいシェルを起動すると、このオプションは設定されません。

$ b32sh -li
$ echo $-
himBH

しかし、それはbash 4.4にあります。

$ b44sh -li
$ echo $-
himBHs

おすすめ記事