Ist es gefährlich, immer Extglob zu haben?


Antworten:


13

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.

 $ bash -c $'shopt -s extglob\necho $0' '/@(u|v)*'
/usr /var
$ bash -c $'echo $0' '/@(u|v)*'
/@(u|v)*

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 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.