अंतर्निहित कमांड हमेशा बाहरी कमांड के लिए पसंद की जाती हैं। औचित्य यह है कि अंतर्निहित कमांड तेज है (और कुछ मामलों में, जैसे cd
या , केवल अंतर्निहित कमांड का वांछित प्रभाव हो सकता है)।test -o BASH_OPTION
कभी-कभी बाहरी कमांड में ऐसी क्षमताएं हो सकती हैं जो शेल बिल्ट नहीं करती हैं। उस स्थिति में, आप एक स्पष्ट रास्ता (यानी एक स्लैश युक्त) देकर बाहरी कमांड को कॉल कर सकते हैं (यह आदेश के बारे में किसी भी चिंता को दरकिनार कर देता है $PATH
)। यदि आप बाहरी पथ को हार्ड-कोड नहीं करना चाहते हैं, लेकिन आप बिलिन के उपयोग को रोकना चाहते हैं, तो आप bash में, ksh और zsh में "$(type -P test)"
(नोट कैपिटल P
) का उपयोग कर सकते हैं । बाहरी कमांड के उपयोग के लिए बाध्य करने का दूसरा तरीका बिलिन ( ) का उपयोग करना या उपयोगिता ( ) से गुजरना है ।"$(whence -p test)"
=test
command
command -p test …
env
env test …
Zsh में, आप एक बेसिन को निष्क्रिय कर सकते हैं disable test
। यह स्थायी है (वर्तमान शेल या उपधारा के लिए) जब तक कि बिलिन के साथ फिर से जुड़ नहीं जाता है enable test
। बैश में, आप इसे enable -n test
अक्षम करने और enable test
पुन: प्रयोज्य करने के लिए कर सकते हैं ।
उदाहरण के लिए alias test=/usr/bin/test
या किसी अन्य आदेश के निष्पादन के लिए बाध्य करने के लिए आप किसी अन्य नाम या फ़ंक्शन का उपयोग कर सकते हैं test () { /usr/bin/test "$@"; }
। यदि आपके पास ऐसा कोई उपनाम है, तो आप इसके किसी भी भाग को उद्धृत करके इसके उपयोग को रोक सकते हैं, उदाहरण के \test
लिए सामान्य फ़ंक्शन / बिल्डिन / बाहरी लुकअप करेंगे। ध्यान दें कि शेल और उसकी सेटिंग्स के आधार पर, किसी फ़ंक्शन में उर्फ परिभाषा का विस्तार तब किया जा सकता है जब कोई फ़ंक्शन पढ़ा जाता है या जब इसे निष्पादित किया जाता है। यदि आपने कोई फ़ंक्शन परिभाषित किया है, तो आप command test
फ़ंक्शन लुकअप के साथ-साथ अन्य लुकअप को रोकने के लिए उपयोग कर सकते हैं (इसलिए यहां test
बिलिन को अक्षम होने तक लागू किया जाएगा)।
/usr/bin/test -f "$file"
...