Laut bashs Handbuchseite:
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.
In der Praxis jedoch ...
$ bash --noprofile --norc
bash-4.2$ touch .bar
bash-4.2$ echo .*
. .. .bar
bash-4.2$ GLOBIGNORE=.
bash-4.2$ echo .*
.bar
Warum wird ..
aus der Liste der Übereinstimmungen entfernt? Soweit ich weiß, .
stimmt das Muster
NICHT überein ..
, oder?
GLOBIGNORE
nur ignorieren.
und..
in Schrägstrichen ohne Muster und GLOBIGNORE Dateipfade filtert, keine Dateinamen.GLOBIGNORE=.; echo .*
wird nicht enthalten.
noch..
, aberGLOBIGNORE=.; echo ./.*
(oderecho /bin/.*
) wird! Um zu ignorieren.
und..
von allen Globs, sieht es so aus, als ob Sieshopt -s extglob
und brauchenGLOBIGNORE='?(*/)@(.|..)'
.