complete yerleşiği kullanılarak etkinleştirilen
bir tamamlama belirtiminin (compspec) bir komutun bir argümanı için
sözcük tamamlamasında kullanılmaya çalışılması halinde, programlanabilir
tamamlama araçları çağrılmış olur.
Önce komut ismi saptanır. Bu komut için bir tamamlama belirtimi
tanımlanmışsa, bu, sözcüğün olası tamamlamalarını üretir.
Komut tam dosyayolu belirtilerek verilmişse ilk olarak bu dosyayoluna
göre bir tamamlama belirtimi aranır. Tam dosyayolu için bir tamamlama
belirtimi bulunmuyorsa, son / işaretinden sonraki kısım için bir
tamamlama belirtimi bulunmaya çalışılır.
Bir tamamlama belirtimi bir kere bulunduktan sonra, onunla, uygun
sözcüklerin bir listesi üretilir. Bir tamamlama belirtimi yoksa,
Readline Sizin Yerinize Yazsın bölümünde bahsedilen
öntanımlı Bash tamamlaması uygulanır.
İlk olarak, tamamlama belirtimi tarafından belirtilen eylemler kullanılır
ve sadece sözcük ile başlayan tamamlamalar döndürülür. Dosyaismi veya
dizin ismi tamamlaması için
-f ya da
-d
seçeneği kullanıldığında,
FIGNORE kabuk değişkeni uyuşanları süzmek için kullanılır.
Sonra,
-G seçeneği ile bir dosyaismi yorumlama kalıbı
verilerek tamamlamalar üretilir. Sözcüklerin üretildiği kalıbın tamamlanması
istenen sözcükle eşleşmemesi gerekir. Eşleşenleri süzmekte
GLOBIGNORE kabuk
değişkeni değil,
FIGNORE kabuk değişkeni kullanılır.
Bu eşleşmeler üretildikten sonra,
-F ve
-C seçenekleri ile bir kabuk işlevi ya da bir komut
çağrılır ve
COMP_LINE
ile COMP_POINT değişkenlerine değerleri atanır.
Bir kabuk işlevi çağrılmışsa ayrıca
COMP_CWORD ve
COMP_WORDS değişkenleri de atanır.
İşlev veya komut çağrıldığında, ilk argüman argümanları tamamlanacak
olan komutun ismidir, ikinci argüman tamamlanan sözcüktür ve üçüncü
argüman komut satırındaki tamamlanması istenen sözcüğü önceleyen sözcüktür.
Tamamlanması istenen sözcüğe karşılık üretilen tamamlamalara süzme
uygulanmaz; işlev ya da komut üretilen eşleşmelerle serbestçe tamamlanır.
Bir işlev ilk olarak`
-F seçeneğine belirtilerek çağrılır.
İşlev, eşleşmeleri üretmek için
compgen yerleşiği dahil, her kabuk aracını
kullanabilir. Olası tamamlamaları
COMPREPLY dizi değişkenine yerleştirmelidir.
Sonra, komut ikamesine eşdeğer bir ortam içinde bir komut -C
seçeneğine belirtilerek çağrılır. Bu, komut tamamlamalarının listesini
her biri bir satırda standart çıktıya basmalıdır. Gerekliyse, tersbölü
bir satırsonunu öncelemekte kullanılabilir.
Tüm olası tamamlamalar üretildikten sonra -X
seçeneğine belirtilen bir süzgeç listeye uygulanır. Süzgeç dosyayolu
yorumlaması için kullanılan bir kalıptır; kalıptaki bir
& karakteri tamamlanması istenen sözcük metni ile
değiştirilir. Kalıba uyan tamamlamalar listeden kaldırılacaktır.
! ile başlayan bir kalıp zıt eşleme yapar;
bu durumda, kalıba uymayan tamamlamalar listeden kaldırılacaktır.
Son olarak, -P ve -S seçenekleri
ile belirtilen bir önek ve bir sonek tamamlama listesinin her üyesine
eklenir ve sonuç Readline tamamlama koduna olası tamamlamaların listesi
olarak döndürülür.
Eğer öncelikle uygulanan eylemler bir eşleşme üretmezse ve
tamamlama belirtimi tanımlanırken
complete ile
-o dirnames seçeneği verilmişse, dizin ismi
tamamlanmaya çalışılır.
Eğer tamamlama belirtimi tanımlandığında -o plusdirs seçeneği complete komutuna sağlanmışsa dizin ismi tamamlanmaya çalışılır ve eşleşenler diğer eylemlerin sonuçlarına eklenir.
Öntanımlı olarak, bir tamamlama belirtimi varsa, onun ürettiği her ne
varsa olası tamamlamaların bir tam kümesi olarak tamamlama koduna döner.
Öntanımlı Bash tamamlamaları uygulanmaz ve Readline'ın öntanımlısı olan
dosyaismi tamamlaması kapatılır.
Eğer tamamlama belirtimi tanımlıyken complete yerleşiği -o bashdefault seçeneği ile çalıştırılmışsa ve tamamlama balirtimi bir eşleşme üretmiyosa öntanımlı Bash tamamlamaları uygulanmaya çalışılır.
Tamamlama belirtimi tanımlıyken -o default seçeneği ile çalıştırılmışsa ve tamamlama belirtimi (ve eğer uygulanmışsa öntanımlı Bash tamamlamaları) hiç eşleşme üretememişse, Readline'ın öntanımlı tamamlaması uygulanacaktır.
Bir tamamlama belirtimi dizin ismi tamamlaması istendiğini belirtiyorsa programlanabilir tamamlama işlevleri Readline'ı dizinlere sembolik bağ olan ve mark-symlinked-directories Readline değişkeninin değerine bakmaksızın mark-directories Readline değişkeninin değerine konu olan isimleri tamamlamak için / eklemeye zorlar.