Eu diria que o problema potencial é que ^
é um caractere bastante válido em nomes de arquivos, então o significado de um padrão que o contém muda dependendo se a opção está configurada ou não:
$ touch 'foo' 'bar' '^foo' '^bar'
$ ls ^foo*
^foo
$ setopt extendedglob
$ ls ^foo*
bar ^bar ^foo
Um shell padrão levaria o ^
como um caractere comum, portanto, o recurso provavelmente está desativado por padrão para compatibilidade.
Desde que você se lembre de quais opções estão ativadas, ou seja, como o shell interpreta as globs, deixar extended_glob
ativado não deve ser um problema no uso interativo.
Para scripts que não esperam, mas usam nomes de arquivos estranhos, isso seria um problema, mas os shells não interativos não deveriam ler .zshrc
, então configurá-lo deve estar ok. Apenas não o defina em .zshenv
.
Os globs estendidos no estilo ksh ( @(...|...)
etc., setopt kshglob
) têm um problema semelhante, pois entram em conflito com o modo como zsh manipula parênteses em globs. @(f|b)
significa coisas diferentes, dependendo de se kshglob
está definido ou não.