क्या कोई समझा सकता है कि इस आदेश का क्या मतलब है?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
क्या कोई समझा सकता है कि इस आदेश का क्या मतलब है?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
जवाबों:
${GZIP_BINDIR-'/bin'}एक bashपैरामीटर विस्तार पैटर्न है। से man bash:
${parameter:-word}
Use Default Values. If parameter is unset or null,
the expansion of word is substituted. Otherwise, the value of parameter
is substituted.
इस हिस्से के तुरंत पहले के मैन पेज में (सूचित करने के लिए @jwodder का धन्यवाद) है:
Omitting the colon results in a test only for a parameter that is unset.
जैसा कि मैनपेज कहता है, यह चर का डिफ़ॉल्ट मान सेट करेगा GZIP_BINDIR। यदि GZIP_BINDIRकोई मान पहले से सेट है (शून्य के अलावा जैसा कि आप उपयोग नहीं कर रहे हैं :) तो उस मूल्य का उपयोग किया /binजाएगा , अन्यथा चर के मूल्य के रूप में उपयोग किया जाएगा GZIP_BINDIR।
दूसरी ओर यदि आप अशक्त मूल्यों के लिए भी परीक्षण करना चाहते हैं, तो इस पैटर्न का उपयोग करें (शामिल करें :):
${GZIP_BINDIR:-'/bin'}
उसके बाद $PATHवसीयत को उन मूल्यों तक विस्तारित किया जाएगा जो पहले पकड़े हुए थे। तो, अगर PATHपहले था:
/usr/sbin:/usr/bin
अब आपका PATHहोगा (विचार GZIP_BINDIRसेट नहीं है):
/bin:/usr/sbin:/usr/bin
export PATHयह PATHसभी बाल प्रक्रियाओं को उपलब्ध कराएगा।
:-कहता है: "जब सब्स्टीटर्ड एक्सपेंशन नहीं किया जाता है, तो नीचे दिए गए डॉक्यूमेंट्स का उपयोग करके (उदाहरण के लिए, :-), एक पैरामीटर के लिए बैश टेस्ट जो कि असमतल या अशक्त है। कोलन को छोड़ना । केवल एक पैरामीटर के लिए एक परीक्षण में परिणाम जो
PATHऔर exportएक ही कमांड की सेटिंग को संयोजित कर सकते हैं :export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
क्या वास्तव में पैरामीटर विस्तार के अंदर हाइफ़न से पहले कोई बृहदान्त्र नहीं है ${GZIP_BINDIR-'/bin'}?
इस तरह का निर्माण लगभग हमेशा एक बृहदान्त्र के साथ लिखा जाता है, ${GZIP_BINDIR:-'/bin'}जिसका अर्थ है, "यदि $ GZIP_BINDIR NULL या परेशान है, तो इसे '/ bin' पर सेट करें"
हालांकि, वाक्य रचना आप की आपूर्ति की है मान्य है, लेकिन दुर्लभ। ${GZIP_BINDIR-'/bin'}(कोई कोलन नहीं) का अर्थ है, "यदि $ GZIP_BINDIR परेशान है, तो इसे '/' bin 'पर सेट करें।" यदि इसे सेट किया गया है (घोषित किया गया है) लेकिन इसे सौंपा गया कुछ भी नहीं (जैसे यह पूर्ण है) कुछ भी नहीं डाला जाएगा।
हालांकि पेट के रूप में एक बग यहाँ हो सकता है निम्न चर निर्माण (...} :$ पथ ...) होगा अभी भी अगर $ GZIP_BINDIR सेट लेकिन शून्य है डाला जा। चूँकि यह $ PATH की शुरुआत में एक उपनिवेश जोड़ देगा, यह वर्तमान निर्देशिका को पहले खोजा जाएगा।
यह एक सुरक्षा समस्या के रूप में सबसे अधिक माना जाता है क्योंकि यह आसान बनाता है एक दुर्भावनापूर्ण प्रोग्राम को उसी नाम के साथ मानक कमांड के रूप में इसे केवल वर्तमान निर्देशिका में रखकर चलाया जाता है।
$ GATIP_BINDIR सेट होने पर $ PATH को अपरिवर्तित छोड़ने के लिए लेकिन NULL (खाली) होने पर, सही सिंटैक्स होगा ${GZIP_BINDIR-'/bin:'}$PATH; export PATH
$ PATH को अपरिवर्तित छोड़ने के लिए यदि $ GZIP_BINDIR या तो परेशान है या सेट है, लेकिन NULL, सही सिंटिक होगा ${GZIP_BINDIR:-'/bin:'}$PATH; export PATH
यह कमांड पथ परिवर्तन को अद्यतन करता है।
PATHनिर्देशिका जहां निष्पादन योग्य कार्यक्रमों स्थित हैं का एक सेट को निर्दिष्ट करने के लिए एक वातावरण चर रहा है।
PATH="${GZIP_BINDIR-'/bin'}:$PATH";
यह एक और चर का मान जोड़ता है GZIP_BINDIRयदि पिछले PATH से बाहर निकलें, इसके बजाय / बिन का उपयोग करें और इसे PATH में जोड़ें
export PATH
निर्यात का उपयोग सभी बाल प्रक्रियाओं और उप-प्रकारों के लिए उपलब्ध पैट को निर्धारित करने के लिए किया जाता है। इस बारे में अधिक जानकारी के लिए पढ़ें
आपको ध्यान देना चाहिए कि यह स्थिर नहीं है और आपके शेल से बाहर निकलते ही आप इसे ढीला कर देंगे।
इस PATH को स्थायी बनाने के लिए आपको इन पंक्तियों को अपने साथ जोड़ना होगा .bashrc
gedit .bashrc
और लाइन जोड़ें
export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
उसके बाद कमांड चलाएँ
source .bashrc
:में याद किया है${GZIP_BINDIR-'/bin'}" जरूरी नहीं।${parameter-word}यह भी मान्य है, हालांकि मैन पेज में नहीं लगता है।