बैश एक निष्पादन योग्य गलत रास्ते को याद करता है जिसे स्थानांतरित / हटा दिया गया था


29

जब मैं करता हूं

which pip3

मुझे मिला

/usr/local/bin/pip3

लेकिन जब मैं निष्पादित करने की कोशिश करता हूं तो मुझे pip3एक त्रुटि मिलती है:

bash: /usr/bin/pip3: No such file or directory

ऐसा इसलिए है क्योंकि मैंने हाल ही में उस फ़ाइल को हटा दिया है। अब उस के whichदूसरे संस्करण की ओर इशारा करते हैं pip3, /usr/local/binलेकिन शेल अभी भी गलत रास्ते को याद करता है। मैं इसे उस रास्ते के बारे में कैसे भूल सकता हूं?

whichमैनुअल का कहना है

which returns the pathnames of the files (or links) which would be executed in the current environment, had its arguments been given as commands in
       a strictly POSIX-conformant shell.  It does this by searching the PATH for executable files matching the names of the arguments. It does not follow
       symbolic links.

दोनों /usr/local/binऔर /usr/binमेरे में हैं PATHचर, और /usr/local/bin/pip3एक प्रतीकात्मक कड़ी नहीं है, यह एक निष्पादन योग्य है। तो यह निष्पादित क्यों नहीं करता है?


की सामग्री क्या है /usr/local/bin/pip3?
थॉमस

क्या आप पहले pip3उस शेल में चलते थे जब वह अंदर था /usr/binऔर फिर उसे स्थानांतरित कर दिया था?
एरिक रेनॉफ

1
यदि आप दौड़ते हैं तो आप क्या देखते हैं hash -t pip3?
एरिक रेनॉफ

1
@ एरिक रेनॉफ hash -t pip3प्रिंट्स/usr/bin/pip3
मकड़ी का जाला

2
जब तक आपके पास बहुत अच्छा कारण नहीं है, तब तक आपको हमेशा ही typeहीर का उपयोग करना चाहिए whichtypeएक पॉज़िक्स शेल में बनाया गया है और आपको बताता है कि शेल क्या करेगा, इसके बजाय whichयह अनुमान लगाने की कोशिश करता है कि शेल क्या करेगा।
इकारस

जवाबों:


37

जब आप इसमें एक कमांड चलाते हैं, bashतो उस निष्पादन योग्य का स्थान याद रहेगा, ताकि उसे PATHहर बार फिर से खोज न करना पड़े। इसलिए यदि आप निष्पादन योग्य चलाते हैं, तो स्थान बदल दें, फिर bashभी पुराने स्थान का उपयोग करने का प्रयास करेंगे। आपको इसकी पुष्टि करने में सक्षम होना चाहिए hash -t pip3जिससे पुराना स्थान दिखाई देगा।

यदि आप hash -d pip3इसे चलाते हैं तो यह पुराने स्थान को भूलने के लिए बैश बताएगा और अगली बार जब आप कोशिश करते हैं तो नया ढूंढना चाहिए।


4
या hash -rपूरी तालिका खाली करने के लिए।
Mattdm

हाँ, यह काम किया। मुझे लगता है कि मैं सवाल का शीर्षक बदल दूंगा क्योंकि इसका कोई लेना-देना नहीं है which
मकड़ी का जाला

1
सबसे बैश सुविधाओं के लिए @spiderface यह helpआदमी के बजाय का उपयोग करने के लिए आसान है , तो यहाँhelp hash
एरिक Renouf

3
@spiderface type hashआपको बताएगा कि यह शेल बिल्ड है , इसलिए इसका अपना मैन पेज नहीं है। इसके बजाय, बैश के मैन पेज में उपयोग करें help hashया देखें hash
डेल्टैब del

1
या, यदि आप वास्तव में उपयोग करना चाहते हैं man... चूंकि hashएक bashबिलिन है, तो आप man bashइसे ढूंढना चाहेंगे । लेकिन मैन पेज जो कहता है वह अनिवार्य रूप help hashसे बैश कहता है।
एमएपी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.