$- オプションはいつどこで設定されますか?

$- オプションはいつどこで設定されますか?

私が望む初期設定$-変えるどのファイルからいつから?

答え1

どのファイルからいつから?

シェルがどのように呼び出されるかに応じて、set設定ファイルにコマンド呼び出しがある場合があります/etc/bash.bashrc/etc/profile~/.bashrc

bashのマニュアルを引用すると、次のようになります。

-呼び出されると、set組み込みコマンドまたはシェル自体(-iオプションなど)によって設定された現在のオプションフラグに展開されます。

つまり、いくつかのオプションは次のように異なります。どのようにシェルが呼び出されると(ログインシェルまたはインタラクティブシェル)、一部のオプションはシェル自体によって設定され(つまり、デフォルトオプションです)、手動で設定されるオプションもあります。内蔵set部品は簡単です。たとえば、ユーザーが制御できます。

$ echo $-
himBHs
$ set -b
$ echo $-
bhimBHs

あるいは、シェルが読み取る構成ファイルで使用できます。

参考になると思います。ログインシェルと非ログインシェルの違いは何ですか?そして対話型ログインと非対話型非ログインシェルの区別。これら2つの記事ではシェルを呼び出す方法の大きな違いを説明していますが、terdonの後続の記事では、ログインシェルと非ログインシェルのオプション設定の良い例を示します。また、適切なオプションを設定するためにシェルがそれを呼び出す方法をどのように知っているのか疑問に思います。ところで、こういう文があります。Bashは、それがどのように呼び出されたかをどうやって知ることができますか?:

通常、bashはログインプログラムがそれを呼び出すとbashに名前が-bashであることを伝えるので、これはログインシェルであることを知っています。名前はゼロ番目のコマンドライン引数argv [0]にあります。

前述のように、いくつかのオプションはデフォルトです。例えば、

-m モニターモード。ジョブ制御が有効になりました。 対話型シェルの場合、このオプションはデフォルトで有効になっています。これをサポートするシステムでは、 -h 実行のために検索されたときのコマンドの位置が記憶されます。 この機能はデフォルトで有効になっています。

前述のように、シェルは呼び出し方法と有効化を確認できます-m

関連情報