อัปเดตในปี 2013: การทำ bash-เสร็จสิ้นส่วนใหญ่ถูกเขียนใหม่เพื่อความสมบูรณ์อัตโนมัติเมื่อจำเป็นเท่านั้น ตอนนี้สคริปต์หลักน้อยกว่ามาก
สคริปต์ที่เสร็จสมบูรณ์อาจมีขนาดใหญ่มากในมาตรฐานเชลล์สคริปต์ หนึ่งในเซิร์ฟเวอร์ของฉันมีการเข้าถึงก็เกือบ 1,700 เส้น (57 KB) และนั่นเป็นเพียงสคริปต์หลัก ใน/etc/bash_completion.d
มี ~ 200 สคริปต์อื่น ๆ เพิ่มเติมสำหรับคำสั่งอื่น ๆ ( openssl
, mutt
, mount
... ) รวมเป็นเงินทั้งสิ้น 25,537 เส้นหรือ 1.2 MB แต่ละสคริปต์จะตรวจสอบว่ามีคำสั่งจริงหรือไม่ก่อนที่จะกำหนดตัวจัดการความสมบูรณ์ ในกรณีนี้จะมีประมาณ 330 ครั้งซึ่งแต่ละไฟล์จะเกี่ยวข้องกับการตรวจสอบ$PATH
ไฟล์ที่ปฏิบัติการได้ด้วยชื่อที่กำหนด (แม้ว่าฉันคาดว่า/usr/bin
จะถูกเก็บไว้ในหน่วยความจำ ... )
ยอมรับแม้กระทั่งว่าจะใช้เวลาเพียงครึ่งปีที่สองในการโหลดไม่เต็มสองวินาที แต่มันอาจเป็นส่วนหนึ่งของปัญหา เรียกใช้du -hs /etc/bash_completion*
หรือwc -l /etc/bash_completion{,.d/*} | grep total
ถ้าคุณต้องการตรวจสอบ
คุณสามารถลองจัดหาสคริปต์ด้วยตนเองในโหมด "ติดตาม":
set -x
. /etc/bash_completion
คุณจะเห็นแต่ละบรรทัดขณะดำเนินการ หากมีคำสั่งเฉพาะที่ใช้เวลานานคุณควรสังเกต
( set +x
ปิดใช้งานโหมดติดตาม)