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


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.