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.dvardı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 $PATHbelirli bir ada sahip yürütülebilir bir dosyayı kontrol etmeyi içerir . (Her ne kadar /usr/binbellekte ö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 totalda 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 +xizleme modunu devre dışı bırakır.)