Gulir ke bawah ...
Nama file .
dan ..
selalu diabaikan ketika GLOBIGNORE
diatur dan bukan nol.
Sebagian besar waktu, itu tidak diinginkan untuk memasukkan .
dan ..
sebagai wildcard cocok, karena mereka tidak mewakili file di dalam direktori - mereka adalah peretasan untuk membuat navigasi berfungsi. Bahkan, asal file dot adalah bug di versi awalls
perintah . Penulis bermaksud mengecualikan .
dan ..
dari daftar tetapi secara tidak sengaja mengecualikan semua file yang dimulai dengan .
. Dengan demikian file dot menjadi tersembunyi ls
. Kerang diikuti dengan menyembunyikan file dot suka ls
. Namun cara ini dilakukan adalah hack sekali lagi: file yang dimulai dengan .
hanya dikecualikan jika titik tidak cocok secara eksplisit dalam pola. Jadi polanya .*
termasuk .
dan ..
.
Untuk menjaga kompatibilitas dengan skrip yang ada, shell modern masih termasuk .
dan ..
(kecuali zsh, yang pada masalah ini seperti banyak yang lainnya memiliki perilaku yang lebih waras tetapi tidak kompatibel ke belakang). Namun, jika Anda mengatur GLOBIGNORE
, Anda menggunakan fitur khusus bash, yang menunjukkan bahwa Anda tidak tertarik pada kompatibilitas mundur. Jadi perubahan pencocokan pola untuk mengecualikan .
dan ..
dari semua pencocokan pola.
Pengaturan GLOBIGNORE=.
mengecualikan file yang dikecualikan secara otomatis kapan pun GLOBIGNORE
diatur, sehingga setara dengan shopt -s dotglob
kecuali itu .
dan ..
selanjutnya dikecualikan dari semua pola.
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='?(*/)@(.|..)'
.