Menurut halaman buku panduan 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.
Namun dalam praktiknya ...
$ bash --noprofile --norc
bash-4.2$ touch .bar
bash-4.2$ echo .*
. .. .bar
bash-4.2$ GLOBIGNORE=.
bash-4.2$ echo .*
.bar
Mengapa ..
dihapus dari daftar yang cocok? Sejauh yang saya tahu, polanya
.
TIDAK cocok ..
, bukan?
GLOBIGNORE
hanya mengabaikan.
dan..
dalam pola slash-less dan path file filter GLOBIGNORE bukan nama file.GLOBIGNORE=.; echo .*
tidak akan memasukkan.
juga..
, tetapiGLOBIGNORE=.; echo ./.*
(atauecho /bin/.*
) akan! Untuk mengabaikan.
dan..
dari semua gumpalan, sepertinya Anda perlushopt -s extglob
danGLOBIGNORE='?(*/)@(.|..)'
.GLOBIGNORE='?(*/)@(.|..)'
akan gagal untuk mengecualikan.
dan..
masuk.*/foo
.GLOBIGNORE='?(*/)@(.|..)?(/*)'
akan memecahkan gumpalan seperti./*
...Dari bagian yang berjudul "Perluasan Pathname" di
man bash
:sumber