जवाबों:
एक $PATH
वैरिएबल है जो कमांड नामों के लिए लुकअप करने के लिए सभी पथ (कोलोन-अलग) रखता है। उन फ़ोल्डरों को पहले एक से अंतिम एक तक जांचा जाता है और पाए जाने पर कमांड निष्पादित की जाती है (इसलिए यदि विभिन्न $PATH
निर्देशिकाओं में उस नाम की कई फाइलें हैं , तो पहले वाले को निष्पादित किया जाएगा)।
देखने के लिए $PATH
:
echo $PATH
जाँच करने के लिए कि कहाँ firefox
है:
which firefox
bash
और अन्य गोले और कमांड प्रोसेसर आपकी PATH
निर्देशिकाओं को खोजते हैं , एक निष्पादन योग्य फ़ाइल की तलाश करते हैं जो आपके द्वारा टाइप किए गए कमांड नाम से मेल खाती है।
अन्य उत्तरों में पहले से ही आवश्यक दिए गए हैं। तकनीकी रूप से, शेल एक हैश तालिका में एक कमांड का स्थान संग्रहीत करता है। में bash
आप आदेश द्वारा इस तालिका देख सकते हैं hash
:
$ hash
hits command
2 /usr/bin/ldd
1 /usr/bin/man
1 /usr/bin/less
आप इस हैश तालिका को भी संशोधित कर सकते हैं, विवरण के लिए मैं bash
आदमी पृष्ठ को उद्धृत करता हूं :
hash [-lr] [-p filename] [-dt] [name]
प्रत्येक नाम के लिए, कमांड का पूरा फ़ाइल नाम $ PATH में निर्देशिकाओं को खोजकर और याद करके निर्धारित किया जाता है। यदि -p विकल्प की आपूर्ति की जाती है, तो कोई पथ खोज नहीं की जाती है, और फ़ाइलनाम का उपयोग कमांड के पूर्ण फ़ाइल नाम के रूप में किया जाता है। -R विकल्प शेल को सभी याद किए गए स्थानों को भूलने का कारण बनता है। -D विकल्प शेल को प्रत्येक नाम के याद किए गए स्थान को भूलने का कारण बनता है। यदि -t विकल्प की आपूर्ति की जाती है, तो पूर्ण पथनाम जिसे प्रत्येक नाम से मेल खाती है मुद्रित किया जाता है। यदि -t के साथ कई नाम तर्क दिए गए हैं, तो नाम हैशेड पूर्ण पथनाम से पहले मुद्रित किया जाता है। -L विकल्प आउटपुट को एक प्रारूप में प्रदर्शित करने का कारण बनता है जिसे इनपुट के रूप में पुन: उपयोग किया जा सकता है। यदि कोई तर्क नहीं दिया जाता है, या यदि केवल -l आपूर्ति की जाती है, याद किए गए आदेशों के बारे में जानकारी मुद्रित की जाती है। रिटर्न स्टेटस तब तक सही है जब तक कि कोई नाम नहीं मिलता है या एक अवैध विकल्प की आपूर्ति नहीं की जाती है। यहां आप देख सकते हैं, जो आपको इस सत्र में पहले ही निष्पादित कर चुका है।
अन्य गोले अलग तरीके से व्यवहार कर सकते हैं, zsh
(और मुझे लगता है कि यह से अनुकूलित किया गया था csh
) खोल स्टार्टअप पर या कमांड द्वारा सभी आदेश एकत्र करता है rehash
। तब आपको सभी उपलब्ध आदेशों की पूरी सूची मिलती है hash
और आप निम्न सभी प्रकार के लिए खोज सकते हैं diff
:
zsh$ hash | grep diff
bzdiff=/usr/bin/bzdiff
cdiff=/usr/bin/cdiff
colordiff=/usr/bin/colordiff
diff=/usr/bin/diff
diff3=/usr/bin/diff3
ptardiff=/usr/bin/ptardiff
sdiff=/usr/bin/sdiff
tkdiff=/usr/bin/tkdiff
vimdiff=/usr/bin/vimdiff
xzdiff=/usr/bin/xzdiff
zdiff=/usr/bin/zdiff
फिर से, man zshbuiltins
अधिक जानकारी के लिए परामर्श करें।
$PATH
शब्द द्वारा कार्यक्रमों को देखने के लिए पर्यावरण चर का उपयोग करता है । रास्ते अलग हो जाते हैं :
। आपकी $PATH
सबसे अधिक संभावना है कि कुछ ऐसा है :/usr/bin:/usr/games:/usr/local/bin:/usr/local/games:
, इसलिए वह इसे अंदर पाता है /usr/local/bin
। अपना बदलें $PATH
और पुनः प्रयास करें।complete
बिलिन के माध्यम से टैब पूर्ण व्यवहार बदल सकते हैं । "प्रोग्राम कम्पलीट" देखें man bash
।
$PATH
), तो आप उनwhich -a firefox
सभी को सूचीबद्ध करने के लिए उपयोग कर सकते हैं। निष्पादन पर, शेल पहले वाले को चुनता है।