Według strony podręcznika bash:
GLOBIGNORE
A colon-separated list of patterns defining the set of filenames
to be ignored by pathname expansion. If a filename matched by a
pathname expansion pattern also matches one of the patterns in
GLOBIGNORE, it is removed from the list of matches.
Jednak w praktyce ...
$ bash --noprofile --norc
bash-4.2$ touch .bar
bash-4.2$ echo .*
. .. .bar
bash-4.2$ GLOBIGNORE=.
bash-4.2$ echo .*
.bar
Dlaczego jest ..
usuwany z listy dopasowań? O ile mi wiadomo, wzór
.
NIE pasuje ..
, prawda?
GLOBIGNORE
ignoruj.
i..
we wzorcach bez ukośników, a GLOBIGNORE filtruje ścieżki plików, a nie nazwy plików.GLOBIGNORE=.; echo .*
nie będzie zawierać.
ani..
, aleGLOBIGNORE=.; echo ./.*
(lubecho /bin/.*
) będzie! Aby zignorować.
i..
ze wszystkich globów, wygląda na to, że potrzebujeszshopt -s extglob
iGLOBIGNORE='?(*/)@(.|..)'
.