एकाधिक प्रतिष्ठान और $ $ पाथ


17

मेरे पास Git का पुराना संस्करण स्थापित है:

/usr/bin/

मैंने हाल ही में एक नया संस्करण डाउनलोड किया है:

/usr/local/bin

जब मैं टाइप करता हूं:

which git

मुझे पुराने संस्करण का स्थान मिल गया है। मेरा मानना ​​है कि यह सिर्फ इसलिए है क्योंकि / usr / bin / मेरे $ PATH वैरिएबल में / usr / लोकल / बिन से पहले दिखाई देता है और इसलिए git का पुराना संस्करण पहले पाया गया है।

इसे जांचने के लिए, मैंने git के पुराने संस्करण को "git_old" नाम दिया। अब जब मैं टाइप करता हूं:

which git

मुझे उम्मीद के मुताबिक नए संस्करण का स्थान मिला है। लेकिन जब मैं टाइप करता हूं:

git --version

मुझे निम्नलिखित त्रुटि मिलती है:

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

मैं बस सोच रहा हूं कि मेरा कंप्यूटर Git के लिए पुराने स्थान पर वापस क्यों जा रहा है?

जवाबों:


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कैश को फिर से लोड करने के लिए उपयोग नहीं करते हैं । SSH जैसे सिंगर rehashइसके बजाय कमांड के रूप में उपयोग करते हैं।
मोशे काट्ज़

PATH = $ PATH को कैश साफ़ करना चाहिए। हैश -आर की जरूरत नहीं है।
jrw32982
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.