बैश एक कार्यक्रम नहीं मिल रहा है, भले ही यह मेरे रास्ते पर है


26

मेरा अपने रास्ते पर एक कार्यक्रम है। निर्दिष्ट पूर्ण पथ के साथ निष्पादित होने पर प्रोग्राम चलता है। लेकिन जब मैं इसे केवल इसके नाम के साथ चलाता हूं तो प्रोग्राम नहीं मिल सकता है।

अनिवार्य रूप से, मैं समझना चाहता हूं कि नीचे का उत्पादन कैसे संभव है, और इसे कैसे ठीक किया जाए ताकि मेरा कार्यक्रम वास्तव में पूर्ण पथ के बिना मिल सके:

root:/usr/local/bin# ./siege
****************************************************
siege: could not open /usr/local/bin/etc/siegerc
run 'siege.config' to generate a new .siegerc file
****************************************************
root:/usr/local/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory
root:/usr/local/bin# wtf!?!?

मैं Ubuntu 12.04 पर बैश का उपयोग कर रहा हूं। कृपया ध्यान दें कि घेराबंदी से चेतावनी आउटपुट इस प्रश्न के प्रयोजनों के लिए प्रासंगिक नहीं है, क्योंकि मैं केवल इस बात में दिलचस्पी रखता हूं कि कार्यक्रम पाया जा सकता है या नहीं।

जवाबों:


38

यहाँ उत्पादन पर ध्यान दें:

root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory

बैश आपके पथ में पहले से पाए गए निष्पादन योग्य का एक आंतरिक हैश रखता है। इस मामले में, यह विवरण है कि एक समय में / usr / बिन / घेराबंदी पर एक निष्पादन योग्य था, और फिर से खोज करने से बचने के लिए उस पथ का पुन: उपयोग करता है। आपको इस तरह से घेराबंदी के लिए पथ को मैन्युअल रूप से रीश करने के लिए बैश बताने की आवश्यकता है:

hash siege

आप सभी हैशेड स्थान भी साफ़ कर सकते हैं:

hash -r

0

इस समस्या का एक अन्य कारण यह हो सकता है कि निष्पादन योग्य मार्ग निर्देशिका के बजाय निष्पादन योग्य पथ पर ही है ।

इसलिए डालने के बजाय

/home/myDir/theExecutable

पथ पर, केवल इसे जोड़ें

/home/myDir
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.