$PATH vs. $पथ

Sep 06 2020

मुझे याद नहीं है कि क्यों, लेकिन एक लंबे समय से पहले, मैंने पाया कि किसी कारण से, मुझे इन दोनों चर को सेट करने की आवश्यकता है। इससे बैश में कोई समस्या नहीं हुई, लेकिन अब ज़श में, जब मैंने डाला

export PATH=~/bin:/opt/local/bin:/opt/local/sbin:$PATH export path=$PATH

(एक ही चीज़ जो मैंने .bashrc में इस्तेमाल की थी) अपने इनिशियलाइज़ेशन में, मुझे मिलती है

/Users/…/.zshenv:export:7: path: inconsistent type for assignment

उन्हें "प्रकार" से क्या मतलब है और $ पथ का उपयोग किसके लिए किया जाता है?

जवाब

8 grg Sep 06 2020 at 04:09

'प्रकार' का उल्लेख करने में त्रुटि चर के डेटा प्रकार को संदर्भित करती है, जैसे कि स्ट्रिंग या सरणी।

$PATHएक स्ट्रिंग है, $pathएक सरणी है। आप किसी स्ट्रिंग को असाइन नहीं कर सकते हैं, चाहे चर या शाब्दिक द्वारा, एक चर को टाइप करने के लिए टाइप किया जा सकता है, क्योंकि प्रकार मेल नहीं खाते हैं।

जैसा कि दो चर के बीच अंतर क्या है: वे फ़ोल्डर्स की एक ही सूची का प्रतिनिधित्व करने के लिए हैं, लेकिन विभिन्न स्वरूपों में। $PATHयुक्त /path/to/one:/path/to/twoका अर्थ होगा कि $pathपहला तत्व है /path/to/oneऔर दूसरा है /path/to/two।

आपको दो चर का प्रबंधन करने की आवश्यकता नहीं है (और एक दूसरे को असाइन करने से काम नहीं चलेगा क्योंकि प्रकार मेल नहीं खाते हैं) - शेल को आपके लिए इसे संभालना चाहिए। बस $PATHस्ट्रिंग के लिए संलग्न करें और आपके द्वारा जोड़े गए पथ को एक तत्व के रूप में मौजूद होना चाहिए $path।

यह केवल zshसे विरासत में मिला है *csh। आप दो चर के बीच 'बाइंडिंग' को देख सकते हैं typeset -p PATH।

$path एक सरणी होना वास्तव में सुविधाजनक है:

  • पथ को जोड़ना और बदलना, स्ट्रिंग हेरफेर के बजाय एपेंड की तरह सरणी संचालन के साथ किया जा सकता है (बीच में कहीं संपादन के मामले में विभाजन और विभाजन में शामिल होने की आवश्यकता होती है)।

  • for i ($path) { … }सही विभाजन वर्ण की सेटिंग से निपटने के लिए बिना जरूरत के माध्यम से लूपिंग है ।

3 fd0 Sep 06 2020 at 04:04

PATH एक अदिश मान है- कॉलन और पथ द्वारा अलग किए गए खोज पथों की एक निरंतर स्ट्रिंग खोज पथों की एक सरणी है। zshपथ और पथ दोनों को समन्‍वयित करेगा। आपको ऐसा करने की कोई आवश्यकता नहीं है।