2013'te güncelleme: Bash tamamlamanın çoğu, yalnızca gerektiğinde otomatik yükleme tamamlamaları için yeniden yazıldı. Çekirdek senaryo şimdi çok bağlayıcı.
Tamamlama komut dosyası bazen kabuk komut dosyası standartlarında çok büyük olabilir . Erişebileceğim bir sunucuda, neredeyse 1700 satır (57 KB) ve bu sadece temel komut dosyası . Gelen /etc/bash_completion.d
vardır ~ çeşitli diğer komutlar için 200 ek komut ( openssl
, mutt
, mount
...) 25.537 satırları veya 1.2 MB toplam. Her komut dosyası kaynaklandığında tamamlama işleyicilerini tanımlamadan önce bir komutun gerçekten kullanılabilir olup olmadığını kontrol eder; Bu durumda ~ 330 kez, her biri $PATH
belirli bir ada sahip yürütülebilir bir dosyayı kontrol etmeyi içerir . (Her ne kadar /usr/bin
bellekte önbelleğe alınmayı beklesem de ...)
Kuşkusuz, hatta o sadece iki tam saniye yüke yarım saniye sürer. Ama sorunun en azından bir parçası olabilir. Koşmak du -hs /etc/bash_completion*
ya wc -l /etc/bash_completion{,.d/*} | grep total
da kontrol etmek istiyorsanız.
Komut dosyasını "izleme" modunda elle kaynak oluşturmayı deneyebilirsiniz:
set -x
. /etc/bash_completion
Her satırı yürütüldüğünde göreceksiniz. Uzun süren belirli bir komut varsa, bunu fark etmelisiniz.
( set +x
izleme modunu devre dışı bırakır.)