スーツと買い物、なぜ二人ですか?

スーツと買い物、なぜ二人ですか?

setどちらshoptもさまざまなオプションを制御するシェル組み込みコマンドです。どのオプションがどのコマンドで設定されるか、どのオプションが設定/解除されるか(set -o/+oshopt -s/-u)忘れてしまうことが多いです。同じタスクを実行しているように見える(そしてそのタスクを実行するためのパラメータが異なる)、2つの異なるコマンドがあるのはなぜですか?どのオプションがどのコマンドで使用されるかを覚える簡単な方法/ニーモニックはありますか?

答え1

私が知る限り、これらのset -oオプションは他のBourneスタイルのシェル(主にksh)から継承されたオプションであり、これらのshoptオプションはbashにのみ適用されます。私が知る限り、論理はありません。

答え2

違いは、bashで使用される環境変数が変更されたことです。コマンドを使用setして結果をに設定します。コマンド$SHELLOPTSを使用shoptして結果をに設定します$BASHOPTS

答え3

答え4

本「Bashを使用したLinuxシェルスクリプト」、63ページ:

歴史的に、このsetコマンドはオプションをオンまたはオフにするために使用されました。オプションの数が多いほど、setオプションは単一の文字コードで表示されるため、使用がますます困難になります。したがって、Bashはshopt住宅オプション) コマンドは、文字の代わりに名前でオプションのオンとオフを切り替えます。一部のオプションは文字でのみ設定できます。その他はshoptコマンドでのみ使用できます。これにより、特定のオプションを見つけて設定することが混乱しています。

関連情報