The filenames
.and..are always ignored whenGLOBIGNOREis set and not null.
Na maioria das vezes, não é desejável incluir . e .. como correspondências curinga, já que elas não representam arquivos dentro do diretório - elas são hacks para fazer a navegação no diretório funcionar. Na verdade, a origem dos arquivos de pontos é um bug em uma versão anterior do comando ls . O autor pretendia excluir . e .. da listagem, mas excluiu acidentalmente todos os arquivos que começam com . . Assim, os arquivos dot ficaram ocultos de ls . Shells seguiram o exemplo, ocultando arquivos de pontos como ls . No entanto, a maneira como isso foi feito foi novamente um hack: os arquivos que começam com . são excluídos apenas se o ponto não for correspondido explicitamente no padrão. Portanto, o padrão .* inclui . e .. .
Para preservar a compatibilidade com os scripts existentes, os shells modernos ainda incluem . e .. (exceto zsh, que nessa questão como muitos outros tem um comportamento mais seguro, mas não compatível com versões anteriores). No entanto, se você definir GLOBIGNORE , estará usando um recurso específico do bash, o que mostra que você não está interessado em compatibilidade com versões anteriores. Portanto, as alterações de correspondência de padrões excluem . e .. de todas as correspondências de padrões.
A definição de GLOBIGNORE=. exclui um arquivo que é excluído automaticamente sempre que GLOBIGNORE é definido, por isso é equivalente a shopt -s dotglob , exceto que . e .. são excluídos de todos os padrões.