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
dotglob
ligado, então a definiçãoGLOBIGNORE
parece perfeita.