recentemente me deparei
setopt extended_glob
...para habilitar o globbing estendido, que permite várias adições legais de curingas, como excluir padrões específicos, por exemplo:
ls ^foo*
...usará ls
em todos os caminhos em seu diretório atual, exceto para padrões que correspondam a foo*
.
Encontrei um tutorial sugerindo colocar setopt extended_glob
dentro do seu .zshrc
, mas acho que, como muitos modelos de configuração do zsh perdem essa opção e a opção de ser desativada por padrão , ela tem algumas desvantagens ou mesmo efeitos colaterais?
Ou é absolutamente inofensivo, sempre permitindo extended_glob
colocá-lo dentro de alguém .zshrc
?
Eu diria que o problema potencial é que
^
é um caractere bastante válido em nomes de arquivo, portanto, o significado de um padrão que o contém muda com base na opção definida ou não:Um shell padrão usaria o
^
como um caractere comum, portanto, o recurso provavelmente está desativado por padrão para compatibilidade.Desde que você se lembre quais opções estão habilitadas, ou seja, saiba como o shell interpreta os globs, deixar
extended_glob
habilitado não deve ser um problema no uso interativo.Para scripts que não esperam isso, mas usam nomes de arquivos estranhos, seria um problema, mas shells não interativos não devem ler
.zshrc
, portanto, defini-lo deve estar ok. Só não coloque em.zshenv
.Os globs estendidos do estilo ksh (
@(...|...)
etc.,setopt kshglob
) têm um problema semelhante, pois entram em conflito com o modo como zsh lida com parênteses em globs.@(f|b)
significa coisas diferentes, dependendo sekshglob
está definido ou não.