২০১৩-তে আপডেট: কেবলমাত্র প্রয়োজনের সময় ব্যাশ-সমাপ্তির বেশিরভাগটি অটোল্যাড কমপ্লিমেন্টগুলিতে পুনরায় লেখা হয়েছিল। মূল স্ক্রিপ্ট এখন অনেক বেশি জিগের।
সমাপ্তি স্ক্রিপ্ট কখনও কখনও শেল স্ক্রিপ্ট স্ট্যান্ডার্ডে বিশাল হতে পারে । একটি সার্ভারে আমার অ্যাক্সেস রয়েছে এটি প্রায় 1700 লাইন (57 কেবি) এবং এটি কেবল মূল স্ক্রিপ্ট । ইন /etc/bash_completion.d
আছে ~ অন্যান্য বিভিন্ন কমান্ডের জন্য 200 অতিরিক্ত স্ক্রিপ্ট ( openssl
, mutt
, mount
...) 25537 লাইন বা 1.2 মেগাবাইট মোট। প্রতিটি স্ক্রিপ্ট, উত্সাহিত হয়ে গেলে, সমাপ্তি হ্যান্ডলারের সংজ্ঞা দেওয়ার আগে একটি আদেশ আসলে পাওয়া যায় কিনা তা পরীক্ষা করে; এই ক্ষেত্রে 30 330 বার, যার প্রত্যেকটিতে $PATH
একটি প্রদত্ত নামের সাথে এক্সিকিউটেবল ফাইলের জন্য পরীক্ষা করা জড়িত । (যদিও আমি /usr/bin
স্মৃতিতে ক্যাশে হবে আশা করি ...)
স্বীকার করা যায়, এমনকি এটি লোড হতে কেবল আধা সেকেন্ড সময় নেয়, পুরো দুটি সেকেন্ড নয়। তবে এটি সমস্যার অন্তত অংশ হতে পারে। চালান du -hs /etc/bash_completion*
বা wc -l /etc/bash_completion{,.d/*} | grep total
যদি আপনি চেক করতে চান।
আপনি "ট্রেস" মোডে স্ক্রিপ্টটি ম্যানুয়ালি সোর্স করার চেষ্টা করতে পারেন:
set -x
. /etc/bash_completion
প্রতিটি লাইন কার্যকর হওয়ার সাথে সাথে আপনি দেখতে পাবেন। যদি এমন কোনও নির্দিষ্ট আদেশ থাকে যা দীর্ঘ সময় নেয়, আপনার এটি লক্ষ্য করা উচিত।
( set +x
ট্রেস মোড অক্ষম করে))