Nein, das ist nicht gefährlich. Die extglobOption erhöht nicht das Risiko, versehentlich Schäden zu verursachen. Der einzige Grund, warum es nicht standardmäßig aktiviert ist, ist die Abwärtskompatibilität mit früheren Versionen von bash, und selbst dann sind die Fälle, in denen die Kompatibilität unterbrochen wird, ziemlich weit hergeholt, da das meiste, was extglobaktiviert wird, ein Syntaxfehler ist, wenn dies nicht der Fall ist gesetzt aufgrund der in einem Wort vorkommenden öffnenden Klammer.
$ bash -c $'echo /@(u|v)*'
bash:-c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `echo /@(u|v)*'
$ bash -c $'shopt -s extglob\necho /@(u|v)*'
/usr /var
Der einzige Fall, in dem ich mir vorstellen kann, wo die Kompatibilität mit bash -without-extglob und POSIX sh unterbrochen wird, ist, wenn ein Muster aus einer Variablen erweitert wird. Die Extglob-Muster sind in Dateinamen ungewöhnlich, daher ist dies in der Praxis wahrscheinlich kein Problem.
Die Inkompatibilitäten sind so harmlos, dass diese Muster in ksh standardmäßig aktiviert sind und neuere Versionen von bash standardmäßig mit der Option on ( ./configure --enable-extended-glob-default) kompiliert werden können .
Antworten:
Nein, das ist nicht gefährlich. Die
extglob
Option erhöht nicht das Risiko, versehentlich Schäden zu verursachen. Der einzige Grund, warum es nicht standardmäßig aktiviert ist, ist die Abwärtskompatibilität mit früheren Versionen von bash, und selbst dann sind die Fälle, in denen die Kompatibilität unterbrochen wird, ziemlich weit hergeholt, da das meiste, wasextglob
aktiviert wird, ein Syntaxfehler ist, wenn dies nicht der Fall ist gesetzt aufgrund der in einem Wort vorkommenden öffnenden Klammer.Der einzige Fall, in dem ich mir vorstellen kann, wo die Kompatibilität mit bash -without-extglob und POSIX sh unterbrochen wird, ist, wenn ein Muster aus einer Variablen erweitert wird. Die Extglob-Muster sind in Dateinamen ungewöhnlich, daher ist dies in der Praxis wahrscheinlich kein Problem.
Die Inkompatibilitäten sind so harmlos, dass diese Muster in ksh standardmäßig aktiviert sind und neuere Versionen von bash standardmäßig mit der Option on (
./configure --enable-extended-glob-default
) kompiliert werden können .quelle