Respostas:
No bash, nesta ordem:
GLOBIGNORE=.
shopt -u dotglob
Quando GLOBIGNORE está definido,. e .. são automaticamente ignorados; portanto, você não precisa defini-los em GLOBIGNORE, mas se você não tiver mais nada a ignorar, não terá nada para defini-lo.
Toda vez que você define GLOBIGNORE como um valor não nulo, o bash ativa a opção dotglob; portanto, você precisará desativá-la posteriormente; caso contrário, o bash será expandido *para incluir arquivos que começam com um ponto.
.e ..mas não foo/.e foo/... Você pode usar GLOBIGNORE=.:*/.:*/..para fazer isso funcionar também com nomes de caminhos.
Em um sistema desconhecido em que tenho pouco tempo para verificar as configurações em uso (como GLOBIGNORE), uso o seguinte padrão infalível:
command .??*
.e ..independentemente do ambiente..a
dotglobligado, então a definiçãoGLOBIGNOREparece perfeita.