একাধিক ইনস্টলেশন ও সমঝোতা AT পথ


17

আমার এখানে গিটের একটি পুরানো সংস্করণ ইনস্টল করা আছে:

/usr/bin/

আমি সম্প্রতি এটিতে একটি নতুন সংস্করণ ডাউনলোড করেছি:

/usr/local/bin

যখন আমি টাইপ করি:

which git

আমি পুরানো সংস্করণটির অবস্থান পেয়েছি। আমি বিশ্বাস করি যে এটি কেবলমাত্র আমার $ PATH ভেরিয়েবলের / usr / bin / এর আগে / usr / স্থানীয় / বিন উপস্থিত হয় এবং তাই গিটের পুরানো সংস্করণটি প্রথমে 'পাওয়া যায়'।

এটি পরীক্ষা করতে, আমি গিটের পুরানো সংস্করণটির নাম দিয়েছি "গিট_ল্ড" to এখন যখন আমি টাইপ করি:

which git

আশানুরূপে আমি নতুন সংস্করণটির অবস্থান পেয়েছি। তবে আমি যখন টাইপ করি:

git --version

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

-bash: /usr/bin/git: No such file or directory

আমি শুধু ভাবছি কেন আমার কম্পিউটার গিটের জন্য পুরানো লোকেশনটি ফিরে দেখছে?

উত্তর:


30

বাশ এক্সিকিউটেবলের পুরো পথটি ক্যাশে করে যাতে এটি $PATHপ্রতিবারের মতো দেখতে হয় না ।

hashকমান্ডটি ব্যবহার করে ক্যাশে রয়েছে তা আপনি দেখতে পারেন :

deltik@node51 [~]$ hash
hits    command
   1    /usr/bin/git

এই ক্যাশে এটি দিয়ে সাফ করা যেতে পারে hash -r:

deltik@node51 [~]$ hash -r
deltik@node51 [~]$ hash
hash: hash table empty

অতিরিক্ত সম্পদ


2
wtf আমি কখনই জানতাম না, দুর্দান্ত।
djsmiley2k অন্ধকারে

1
বেশিরভাগ অন্যান্য শেল একই কাজ করে তবে তারা সমস্ত hash -rক্যাশে পুনরায় লোড করতে ব্যবহার করে না । গায়ক, যেমন এসএসএইচ, rehashপরিবর্তে কমান্ড হিসাবে ব্যবহার করুন।
মোশে কাটজ

PATH = AT PATH কে ক্যাশে সাফ করা উচিত। হ্যাশ-আর দরকার নেই।
jrw32982 20
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.