Нет, это не опасно. Опция extglob
не увеличивает риск случайного нанесения ущерба. Единственная причина, по которой она не включена по умолчанию - это обратная совместимость с предыдущими версиями bash, и даже тогда случаи, когда она нарушает совместимость, довольно надуманны, потому что большинство из того, что extglob
позволяет, является синтаксической ошибкой, если она не установлена из-за того, что открывающая скобка встречается в слове.
$ 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
Единственный случай, когда это нарушает совместимость с bash -without-extglob и POSIX sh - это когда шаблон расширяется из переменной. Шаблоны extglob необычны в именах файлов, поэтому на практике это вряд ли будет проблемой.
$ bash -c $'shopt -s extglob\necho $0' '/@(u|v)*'
/usr /var
$ bash -c $'echo $0' '/@(u|v)*'
/@(u|v)*
Несовместимости достаточно благоприятны, поэтому в ksh эти шаблоны включены по умолчанию, а последние версии bash могут быть скомпилированы с включенной опцией по умолчанию (./configure --enable-extended-glob-default
).