मुझे संदेह है कि आप तीसरी बात करने का प्रयास कर रहे हैं लेकिन गलत वाक्य रचना का उपयोग कर रहे हैं। पाँच सामान्य गलतियाँ जो आप देख रहे हैं जैसे त्रुटियाँ पैदा कर सकती हैं:
के बजाय रिक्त स्थान का उपयोग करना =
। export NAME value
गलत है; value
फिर निर्यात करने के लिए एक बाद वाले चर के नाम के रूप में व्याख्या की जाती है।
(यह इसलिए होता है क्योंकि export NAME1 NAME2
है कई चर निर्यात करने के लिए सही सिंटैक्स।)
चारों ओर रिक्त स्थान डालना =
। कई प्रोग्रामिंग भाषाओं में, यह ज्यादातर वैध और स्टाइलिस्टिक रूप से पसंद किया जाता है, जो अधिकांश समय रिक्त स्थान वाले पैड ऑपरेटरों के लिए पसंद किया जाता है। लेकिन शेल स्क्रिप्ट (या अन्य स्थिति जहां आप शेल कमांड जारी कर रहे हैं) में एक वैरिएबल के लिए एक मान निर्दिष्ट करने के लिए, यह अनुमति नहीं है। NAME = value
(एक export
आदेश में या अन्यथा) काम नहीं करेगा; आप का उपयोग करना चाहिए NAME=value
।
( export NAME = value
निर्यात चर की कोशिश करता नामित NAME
, =
, और value
। सौभाग्य से यह सफल होने के लिए चुपचाप क्योंकि एक चर बुलाया निर्यात करने का प्रयास प्रकट होता है कभी नहीं =
एक सिंटैक्स त्रुटि है। इसके विपरीत export NAME= value
काम करने के लिए दिखाई देगा, लेकिन असाइन नहीं value
करने के लिए NAME
--instead, यह खाली प्रदान करती है, शून्य-लंबाई स्ट्रिंग NAME
और इसे निर्यात करने के लिए, और अलग से चर निर्यात करता है value
। दोनों सामान्य गलतियां हैं।)
रिक्त स्थान के साथ चर के मूल्य के कुछ हिस्सों को अलग करना। पर्यावरण चर में स्थान हो सकते हैं, लेकिन व्यवहार में वे शायद ही कभी पर्यावरण चर में क्षेत्र विभाजक के रूप में उपयोग किए जाते हैं। जब एक एकल चर जानबूझकर कई पथ होते हैं, तो आमतौर पर :
उन्हें अलग करने के लिए उपयोग किया जाता है।
चरों को असाइन करते समय रिक्त स्थान नहीं। कभी-कभी एक पर्यावरण चर के मान में एक स्थान शामिल होता है। उदाहरण के लिए, यह एक निर्देशिका का नाम हो सकता है जिसमें वास्तव में एक स्थान होता है। उस स्थिति में, किसी भी स्थान को उद्धृत करना आवश्यक है।
ऐसा करने का एक तरीका यह है कि उनके साथ पूर्ववर्ती हो \
। देखें कि मैं cd कमांड में पारित कोष्ठकों की सुरक्षा कैसे कर सकता हूं? और अन्य तरीकों से जानकारी के लिए फ़ाइल को हटाने में असमर्थ - उत्तर में प्रस्तुत तरीके लागू होते हैं, भले ही प्रश्न विशेष रूप से पर्यावरण चर को निर्दिष्ट करने के बारे में नहीं है।
उदाहरण के लिए, SILLYPATH
मूल्य के साथ पर्यावरण चर को निर्यात करने के कुछ तरीके यहां दिए गए हैं /home/ek/silly name/bin
:
export SILLYPATH=/home/ek/silly\ name/bin
export SILLYPATH='/home/ek/silly name/bin'
export SILLYPATH="/home/ek/silly name/bin"
अक्सर जब एक फ़ोल्डर जिसे आपको शेल में उपयोग करना चाहिए या व्यापक रूप से उपयोग किए जाने वाले पर्यावरण चर में असाइन करना होता है, तो इसका नाम बदला जा सकता है। (लेकिन कभी-कभी यह अव्यावहारिक या अवांछनीय होता है।)
एक चर का निर्यात और / या जब कुछ भी नहीं किया जाना था। यह एक मेटा-गलती की तरह है; विशिष्ट तकनीकी समस्या अक्सर उपर्युक्त में से एक होती है, लेकिन इसका समाधान हल करने के बजाय आपत्तिजनक रेखा, या उसके कुछ हिस्से से छुटकारा पाना है। .bashrc
बेशक कोड से अंधाधुंध तरीके से न हटाएं । लेकिन export
गलती से जोड़ा जा सकता है, या अनजाने में उस से अधिक कोड हो सकता था, जिसका इरादा था। उदाहरण के लिए, मान लें कि आपका लिखने का मतलब है:
echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
यह करने के लिए अपील करेंगे .bashrc
, तो यह फिर से स्रोत। लेकिन मान लीजिए कि आपने इसके बजाय लिखा है:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
तब आपकी export
कमान न केवल एक संवर्धित मूल्य का निर्यात PATH
करेगी, बल्कि नामित चर .
और निर्यात करने का भी प्रयास करेगी , जो कि आप नहीं चाहते हैं। चूँकि उनमें वे वर्ण होते हैं जो चर नामों में निषिद्ध होते हैं, इसलिए आपको हर बार एक नया इंटरेक्टिव बैश शेल शुरू करने में त्रुटि होगी।/home/your-username/.bashrc
इस समस्या से बचने के लिए, मैं आउटपुट के साथ इसके अंत तक रीडायरेक्ट करने के बजाय .bashrc
एक संपादक (जैसे nano ~/.bashrc
, gedit ~/.bashrc
) में संपादन का सुझाव देता हूं >>
।