बैश शैल में अंतर्निहित कैश को निष्पादन योग्य के लिए hash -r
रीसेट करने के लिए एक अंतर्निहित कमांड है $PATH
।
इस आदेश का उपयोग करना कब आवश्यक है?
संबंधित: कैसे मारपीट के साथ $ PATH में निष्पादन योग्य रिहर्सल करें
बैश शैल में अंतर्निहित कैश को निष्पादन योग्य के लिए hash -r
रीसेट करने के लिए एक अंतर्निहित कमांड है $PATH
।
इस आदेश का उपयोग करना कब आवश्यक है?
संबंधित: कैसे मारपीट के साथ $ PATH में निष्पादन योग्य रिहर्सल करें
जवाबों:
hash
एक बैश बिल्ट-इन कमांड है। हैश टेबल बैश की एक विशेषता है जो हर बार जब आप मेमोरी में परिणाम कैशिंग करके एक कमांड टाइप करते हैं तो $ PATH को खोजने से रोकता है।
इसलिए जब कैश्ड / संग्रहित जानकारी अब अपडेट या मान्य नहीं है, तो आपको इसे रीसेट करने की आवश्यकता हो सकती है।
यूनिक्स स्टेक्सचेंज पर इस अच्छे जवाब पर और पढ़ें ।
यदि आपने पहले उस शेल इनवोकेशन में एक प्रोग्राम चलाया है, और फिर अपनी $PATH
खोज सूची में एक और निर्देशिका में इसका दूसरा संस्करण स्थापित किया है , तो आपको हैश को रीसेट करने की आवश्यकता है ताकि यह नए स्थान पर मिल जाए। अन्यथा, यह पुराने स्थान पर प्रोग्राम को खोजने के लिए कैश का उपयोग करेगा।
यदि किसी प्रोग्राम को आपकी निर्देशिका में 2 निर्देशिकाओं में स्थापित किया गया है, तो आपको हैश को रीसेट करने की भी आवश्यकता है $PATH
, और आप इसे चलाने के बाद पहले वाले स्थान से प्रतिलिपि हटा दें। अन्यथा, यह उस स्थान पर खोजने की कोशिश करेगा, और "ऐसी कोई फ़ाइल या निर्देशिका नहीं" की रिपोर्ट करेगा (व्यक्तिगत रूप से, मुझे लगता है कि यह स्वचालित रूप से हैश को साफ़ करना चाहिए और ऐसा होने पर पूरी खोज करना चाहिए, लेकिन ऐसा तब नहीं हुआ जब मैंने कोशिश की थी। )।
ध्यान दें कि आपको वास्तव में पूरे हैश को रीसेट नहीं करना है, आप इसका उपयोग कर सकते हैं:
hash name
इसे केवल नाम के लिए कैश प्रविष्टि को अद्यतन करने के लिए बाध्य करने के लिए, या:
hash -d name
बस उस कैश प्रविष्टि को हटाने के लिए। ये अन्य सभी कैश प्रविष्टियों को अकेले छोड़ देते हैं।
इसे hash -r
संशोधित करने के बाद आपको उपयोग करने की आवश्यकता नहीं है $PATH
, ऐसा होने पर यह स्वचालित रूप से रीसेट हो जाता है।