यदि आप यह जानना चाहते हैं कि आपके वर्तमान Mac टर्मिनल सत्र में कोई कमांड नाम किस प्रोग्राम को चलाएगा, तो पहले zsh से पूछें कि वह उस नाम की व्याख्या कैसे करता है, फिर निष्पादन योग्य फ़ाइलों के लिए PATH खोजें। यह इसलिए महत्वपूर्ण है क्योंकि शेल के किसी फ़ाइल तक पहुँचने से पहले ही एक कमांड किसी उपनाम (alias) या शेल फ़ंक्शन में रिज़ॉल्व हो सकता है। macOS पर, टर्मिनल का डिफ़ॉल्ट शेल zsh है, हालाँकि टर्मिनल प्रोफ़ाइल या व्यवस्थापक कोई अन्य शेल चुन सकता है। Apple की टर्मिनल मार्गदर्शिका

zsh से पूछें कि कमांड नाम का क्या अर्थ है

टर्मिनल में, बिना ऐसे तर्कों (arguments) के जो इसे निष्पादित कर दें, कमांड नाम के साथ whence -v चलाएं। उदाहरण के लिए:

whence -v python3

आउटपुट यह पहचान करता है कि zsh किस प्रकार के कमांड का उपयोग करेगा: यह किसी alias, फ़ंक्शन, बिल्टिन या बाहरी कमांड की जानकारी दे सकता है। यदि यह किसी alias या फ़ंक्शन की रिपोर्ट करता है, तो वह नाम सीधे उस निष्पादन योग्य फ़ाइल की पहचान नहीं करता है जो चलेगी; alias या फ़ंक्शन किसी अन्य कमांड में विस्तृत हो सकता है या कई कमांड चला सकता है। zsh whence को इस बात की रिपोर्ट करने के तरीके के रूप में प्रलेखित करता है कि किसी नाम की व्याख्या कैसे की जाएगी। zsh शेल बिल्टइन्स दस्तावेज़ीकरण

एक संक्षिप्त प्रकार के लेबल (compact type label) के लिए, इसका उपयोग करें:

whence -w python3

यदि परिणाम function है, तो functions python3 के साथ परिभाषा का निरीक्षण करें। यदि यह alias है, तो alias python3 के साथ इसका निरीक्षण करें। ये कमांड वर्तमान शेल परिभाषा को प्रदर्शित करते हैं; वे लक्षित प्रोग्राम को निष्पादित नहीं करते हैं। कोई फ़ंक्शन किसी अन्य फ़ंक्शन या बाहरी प्रोग्राम को कॉल कर सकता है, इसलिए परिभाषा का तब तक अनुसरण करें जब तक कि आप उस कमांड तक न पहुँच जाएँ जो वास्तविक कार्य करता है।

PATH में निष्पादन योग्य फ़ाइलें खोजें

उस फ़ाइल को खोजने के लिए जिसे zsh PATH के माध्यम से ढूंढेगा, भले ही कोई alias या फ़ंक्शन उस नाम को छिपा (shadow) रहा हो, इसका उपयोग करें:

whence -p python3

प्रत्येक मिलान वाली PATH प्रविष्टि को सूचीबद्ध करने के लिए, इसका उपयोग करें:

whence -pa python3

-p विकल्प zsh को शेल-स्तरीय परिभाषा के बावजूद PATH खोजने के लिए कहता है, और -a केवल पहले मिलान के बजाय सभी मिलानों की रिपोर्ट करता है। पहला PATH मिलान वह निष्पादन योग्य फ़ाइल है जिसे zsh सामान्य बाहरी-कमांड लुकअप के लिए ढूंढेगा। zsh यह भी दिखा सकता है कि सिम्बोलिक लिंक whence -ps python3 के साथ कैसे रिज़ॉल्व होता है। zsh शेल बिल्टइन्स दस्तावेज़ीकरण

PATH सूची वर्तमान शेल वातावरण से संबंधित है। print -r -- $PATH के साथ इसकी निर्देशिकाएँ देखें; zsh अपने path पैरामीटर को इस रूप में कोलन-विभाजित मान के रूप में प्रस्तुत करता है। PATH के क्रम में परिवर्तन यह बदल सकता है कि कौन सा डुप्लिकेट नाम पहले मिलता है। Apple PATH को उन निर्देशिकाओं की एक सूची के रूप में वर्णित करता है जिनमें शेल कमांड की खोज करता है, और ध्यान दिलाता है कि शेल वातावरण सेटिंग्स उनके निष्पादन संदर्भ के लिए विशिष्ट होती हैं। Apple: Mac पर टर्मिनल में पर्यावरण चर (environment variables) का उपयोग करें

जांचें कि कोई कमांड कैसे शुरू (invoke) किया गया था

स्लैश के साथ लिखा गया कमांड, जैसे ./python3 या /opt/tools/python3, शेल को नाम के लिए PATH खोजने के लिए कहने के बजाय एक पथ निर्दिष्ट करता है। सापेक्ष पथ (relative path) ./python3 का अर्थ वर्तमान निर्देशिका में स्थित एक फ़ाइल है। Apple का कमांड-लाइन प्राइमर बताता है कि पथ के रूप में उपयोग किए जाने पर बिना किसी शुरुआती स्लैश वाला नाम वर्तमान निर्देशिका के सापेक्ष होता है, और ./ स्पष्ट रूप से वर्तमान निर्देशिका के प्रोग्राम को चलाता है। Apple: कमांड लाइन प्राइमर

python3 जैसे साधारण नाम के लिए, इसके शेल प्रकार और PATH मिलानों दोनों का निरीक्षण करें। / वाले पथ के लिए, उस सटीक फ़ाइल का निरीक्षण करें। स्पेस या शेल मेटाकैरेक्टर वाले पथों को चलाते समय उन्हें उद्धृत (quote) करें; उदाहरण के लिए, "/Applications/Tool Folder/tool"। Apple का प्राइमर पथों में विशेष वर्णों को उद्धृत करने या एस्केप करने का दस्तावेज़ीकरण करता है। यह कमांड को चलाने के तरीके को बदले बिना शुरू की गई फ़ाइल का पता लगाता है।

जानें कि यह लुकअप क्या साबित नहीं कर सकता

लुकअप वर्तमान शेल के रिज़ॉल्यूशन का वर्णन करता है, प्रत्येक निष्पादन संदर्भ का नहीं। किसी अन्य टर्मिनल विंडो में एक अलग PATH या शेल सेटअप हो सकता है, और कोई कमांड किसी स्क्रिप्ट, किसी अन्य शेल या टर्मिनल के बाहर लॉन्च किए गए एप्लिकेशन में भिन्न व्यवहार कर सकता है। Apple ध्यान दिलाता है कि टर्मिनल विंडो शेल परिवेश साझा नहीं करती हैं। Apple: Mac पर टर्मिनल में पर्यावरण चर का उपयोग करें

इसके अलावा, केवल किसी फ़ाइल पथ का पता लगाना अपने आप में यह साबित नहीं करता है कि यह हर मामले में अंततः उपयोग की जाने वाली प्रक्रिया है: फ़ाइल एक सिम्बोलिक लिंक, कोई अन्य प्रोग्राम शुरू करने वाली स्क्रिप्ट, या एक लॉन्चर हो सकती है। whence -ps सिम्लिंक रिज़ॉल्यूशन को प्रकट कर सकता है, लेकिन किसी स्क्रिप्ट के आगे के व्यवहार का पता लगाने के लिए उस स्क्रिप्ट या प्रोग्राम के दस्तावेज़ों का निरीक्षण करना आवश्यक है। यदि whence -p कोई पथ नहीं लौटाता है, तो इस शेल में उस नाम का कोई PATH मिलान नहीं है; यह अभी भी एक alias, फ़ंक्शन, बिल्टिन, या केवल स्पष्ट पथ के माध्यम से उपलब्ध कमांड हो सकता है।

नियमित जांच के लिए, पहले whence -v name चलाएं, किसी भी alias या फ़ंक्शन का निरीक्षण करें, फिर निष्पादन योग्य उम्मीदवारों की तुलना करने के लिए whence -pa name का उपयोग करें। यह क्रम दोनों उत्तर देता है कि zsh किसे पहचानता है और इसकी PATH खोज को कौन सी फ़ाइल मिलेगी।

स्रोत