bash globstar演算子が通常デフォルトで無効になっているのはなぜですか?

bash globstar演算子が通常デフォルトで無効になっているのはなぜですか?

これは非常に便利な機能のようです。ただし、通常はデフォルトで無効になっていることに注意してください。私のシステムで有効にすることを検討しました。しかし、無効になったのにはそのような理由があるでしょう。これを知らずに活性化するのは賢明ではないようです。だから私の質問は:bashバイナリ演算子が通常デフォルトで無効になっているのはなぜですか?

どのようにアクティブにするか、オペレータを何と呼ぶか​​、どのように使用するかについていくつかの質問を見つけました。彼らは最初に活性化する必要があると述べました。しかし、どんな問題も説明できません。なぜデフォルトでは無効になっています。

答え1

開発者に尋ねないと、確かにわかりにくいです。

それにもかかわらず、これは2009年までにBashに追加されていない互換性のない拡張です(以前はzsh、ksh93、yashで実装されていました)。誤って実行すると、驚くべき結果が出る可能性があります。たとえば、スクリプトが次のことを行うと危険です。

rm -- "$dir"/*$pattern*/*       # or
rm -- "$dir"/*"$string"*/*

$pattern空でないことを確認する必要はありません。はい、両方がBashでトリガされますglobstar(有効になっている場合)。

**zsh、、、(after )、ksh93 -o globstarおよびafterを持つ他のほとんどのシェルにも同じ警告が適用されます。しかし、いいえ。意味は少し異なりますが、2つのアスタリスクの間にあるとはトリガーされません。tcshset globstaryash -o extended-globfish**

ステファンの回答を見るls *、ls**、およびls***の結果さまざまなシェルでの実装履歴と違いを理解します。

関連情報