Não, não é perigoso. A opção extglob
não aumenta o risco de causar dano acidental. A única razão pela qual ele não está habilitado por padrão é para compatibilidade com versões anteriores do bash, e mesmo assim, os casos em que ele quebra a compatibilidade são muito improváveis, porque a maior parte do que extglob
habilita é um erro de sintaxe se não está definido devido ao parêntese de abertura que ocorre em uma palavra.
$ 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
O único caso em que consigo pensar onde quebra a compatibilidade com o bash -without-extglob e POSIX sh é quando um padrão é expandido de uma variável. Os padrões extglob são incomuns em nomes de arquivos, então é improvável que isso seja um problema na prática.
$ bash -c $'shopt -s extglob\necho $0' '/@(u|v)*'
/usr /var
$ bash -c $'echo $0' '/@(u|v)*'
/@(u|v)*
As incompatibilidades são suficientemente benignas para que o ksh tenha esses padrões habilitados por padrão, e versões recentes do bash podem ser compiladas com a opção ativada por padrão ( ./configure --enable-extended-glob-default
).