उपयोग न करें 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।