Odpowiedzi:
W skrócie, w następującej kolejności:
GLOBIGNORE=.
shopt -u dotglob
Po ustawieniu GLOBIGNORE,. i .. są automatycznie ignorowane, więc nie musisz ich ustawiać w GLOBIGNORE, ale jeśli nie masz nic innego do zignorowania, nie będziesz mieć nic do ustawienia.
Za każdym razem, gdy ustawisz GLOBIGNORE na wartość inną niż zero, bash włącza opcję dotglob
, więc będziesz musiał ją później wyłączyć; w przeciwnym razie bash rozszerzy *
się o pliki zaczynające się od kropki.
.
, a ..
jednak nie foo/.
i foo/..
. Możesz użyć GLOBIGNORE=.:*/.:*/..
tej opcji, aby działała również z nazwami ścieżek.
W nieznanym systemie, w którym mam za mało czasu na sprawdzenie używanych ustawień (takich jak GLOBIGNORE), używam następującego niezawodnego wzoru:
command .??*
.
i ..
bez względu na środowisko..a
dotglob
włączyć, więc ustawienieGLOBIGNORE
brzmi idealnie.