उपयोग न करें which
, उपयोग करें type
। which
डिफ़ॉल्ट खोल (बैश) में आदेश एक बाहरी उपयोगिता जो उपनाम और कार्यों के बारे में पता नहीं है। दूसरी ओर, type
एक आंतरिक उपयोगिता है जो आपको बताएगी कि क्या इसका तर्क एक उपनाम, एक फ़ंक्शन, एक अंतर्निहित उपयोगिता या एक बाहरी कमांड है।
which
आदेश केवल ऐतिहासिक कारणों के लिए ट्यूटोरियल और मैनुअल में बताया गया है - 30 साल पहले type
आदेश हर जगह मौजूद नहीं था, और कुछ लोगों अनुकूल करने के लिए धीमी गति से किया गया है।
अधिक विवरणों के लिए, ऐतिहासिक और वर्तमान गोले की चर्चा सहित, देखें कि "कौन सा" क्यों नहीं उपयोग किया जाए? फिर क्या उपयोग करें?
$ type cp
cp is aliased to `cp -i'
$ type mkcd
mkcd is a function
mkcd ()
{
…
}
$ type type
type is a shell builtin
$ type cat
cat is /bin/cat
Zsh में, इसका उपयोग करना ठीक है which
: zsh के पास type
और which
अंतर्निहित कमांड के रूप में दोनों हैं ।
यह भी ध्यान दें कि यदि आपने अभी कोई प्रोग्राम स्थापित या हटाया है, तो शेल ने अपने पुराने स्थान को याद कर लिया होगा। उदाहरण के लिए, यदि आपने किसी निर्देशिका में प्रोग्राम के अपने संस्करण को स्थापित किया है जो सिस्टम निर्देशिकाओं से आगे है $PATH
, तो शेल उस प्रोग्राम को लागू करना जारी रख सकता है जो सिस्टम के साथ आया था। यह केवल गोले में एक मुद्दा है जो पहले से ही स्थापना या हटाने के समय चल रहा था। वर्तमान डेटा के साथ शेल की मेमोरी को रीफ्रेश करने के लिए, कमांड चलाएं hash -r
या hash COMMANDNAME
।
which tmux
सिस्टम-वाइड बाइनरी पथ दिखाता है, जिसमें एक साझा साझा लाइब्रेरी है और प्रारंभ नहीं हो सकता है। इस कारण से, मैंने अपने होम फोल्डर में फिक्स्ड शेयर्ड लाइब्रेरी रेफरेंस के साथ एक कॉपी जोड़ दी है और इसे अपने पथ पर जोड़ दिया है।which
अभी भी सिस्टम बाइनरी कोtype
संदर्भित करता है, होम बाइनरी को संदर्भित करता है, और बस रनिंग होम बाइनरी को भी चलाता है। अजीब तरह से,which -a tmux
दो बायनेरिज़ को दिखाता है, लेकिन मेरे संबंध में रिवर्स ऑर्डर में$PATH
।