पर्यावरण चर सेट करने के बाद "वैध पहचानकर्ता नहीं" त्रुटि को कैसे ठीक करें?


12

मैं Ubuntu 14.04 LTS में cocos2dx सेटअप करने का प्रयास कर रहा हूं, लेकिन पर्यावरण चर (इन .bashrc) सेट करने के बाद मुझे यह त्रुटि मिलनी शुरू हो गई है:

bash: export: dev/cocos2d-x-3.2/tools/cocos2d-console/bin': not a valid identifier 
bash: export:/home/john/android': not a valid identifier 
bash: export: dev/android-ndk-r10b': not a valid identifier 
bash: export:dev/adt-bundle-linux-x86_64-20140702/sdk': not a valid identifier

और मुझे नहीं पता कि इसे ठीक करने के लिए क्या करना चाहिए।


1
आपको यह दिखाना होगा कि आप चर कैसे निर्धारित कर रहे हैं।
ग्लेन जैकमैन

जवाबों:


17

लेकिन पर्यावरण चर स्थापित करने के बाद

ऐसा लगता है कि आपने सही तरीके से ऐसा नहीं किया।

आपके द्वारा की जा रही त्रुटियों का अर्थ है कि पथ (जैसे /home/john/android) का उपयोग चर के नाम के रूप में किया जा रहा है , बल्कि उनके द्वारा निर्दिष्ट मूल्यों के रूप में ।

  • वेरिएबल असाइन करने का सही सिंटैक्स है NAME=value
  • एक चर को निर्यात करने के लिए सही सिंटैक्स (जो कुछ भी मूल्य के साथ, यदि कोई हो, यह पहले से ही असाइन किया गया है) export NAME
  • एक ही समय में एक चर (असाइन किए गए मान के साथ) को असाइन करने और निर्यात करने का सही सिंटैक्स है export NAME=value

मुझे संदेह है कि आप तीसरी बात करने का प्रयास कर रहे हैं लेकिन गलत वाक्य रचना का उपयोग कर रहे हैं। पाँच सामान्य गलतियाँ जो आप देख रहे हैं जैसे त्रुटियाँ पैदा कर सकती हैं:

  1. के बजाय रिक्त स्थान का उपयोग करना = export NAME valueगलत है; valueफिर निर्यात करने के लिए एक बाद वाले चर के नाम के रूप में व्याख्या की जाती है।

    (यह इसलिए होता है क्योंकि export NAME1 NAME2 है कई चर निर्यात करने के लिए सही सिंटैक्स।)

  2. चारों ओर रिक्त स्थान डालना =कई प्रोग्रामिंग भाषाओं में, यह ज्यादातर वैध और स्टाइलिस्टिक रूप से पसंद किया जाता है, जो अधिकांश समय रिक्त स्थान वाले पैड ऑपरेटरों के लिए पसंद किया जाता है। लेकिन शेल स्क्रिप्ट (या अन्य स्थिति जहां आप शेल कमांड जारी कर रहे हैं) में एक वैरिएबल के लिए एक मान निर्दिष्ट करने के लिए, यह अनुमति नहीं है। NAME = value(एक exportआदेश में या अन्यथा) काम नहीं करेगा; आप का उपयोग करना चाहिए NAME=value

    ( export NAME = valueनिर्यात चर की कोशिश करता नामित NAME, =, और value। सौभाग्य से यह सफल होने के लिए चुपचाप क्योंकि एक चर बुलाया निर्यात करने का प्रयास प्रकट होता है कभी नहीं =एक सिंटैक्स त्रुटि है। इसके विपरीत export NAME= valueकाम करने के लिए दिखाई देगा, लेकिन असाइन नहीं valueकरने के लिए NAME--instead, यह खाली प्रदान करती है, शून्य-लंबाई स्ट्रिंग NAMEऔर इसे निर्यात करने के लिए, और अलग से चर निर्यात करता है value। दोनों सामान्य गलतियां हैं।)

  3. रिक्त स्थान के साथ चर के मूल्य के कुछ हिस्सों को अलग करना। पर्यावरण चर में स्थान हो सकते हैं, लेकिन व्यवहार में वे शायद ही कभी पर्यावरण चर में क्षेत्र विभाजक के रूप में उपयोग किए जाते हैं। जब एक एकल चर जानबूझकर कई पथ होते हैं, तो आमतौर पर :उन्हें अलग करने के लिए उपयोग किया जाता है।

  4. चरों को असाइन करते समय रिक्त स्थान नहीं। कभी-कभी एक पर्यावरण चर के मान में एक स्थान शामिल होता है। उदाहरण के लिए, यह एक निर्देशिका का नाम हो सकता है जिसमें वास्तव में एक स्थान होता है। उस स्थिति में, किसी भी स्थान को उद्धृत करना आवश्यक है।

    ऐसा करने का एक तरीका यह है कि उनके साथ पूर्ववर्ती हो \। देखें कि मैं 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"

    अक्सर जब एक फ़ोल्डर जिसे आपको शेल में उपयोग करना चाहिए या व्यापक रूप से उपयोग किए जाने वाले पर्यावरण चर में असाइन करना होता है, तो इसका नाम बदला जा सकता है। (लेकिन कभी-कभी यह अव्यावहारिक या अवांछनीय होता है।)

  5. एक चर का निर्यात और / या जब कुछ भी नहीं किया जाना था। यह एक मेटा-गलती की तरह है; विशिष्ट तकनीकी समस्या अक्सर उपर्युक्त में से एक होती है, लेकिन इसका समाधान हल करने के बजाय आपत्तिजनक रेखा, या उसके कुछ हिस्से से छुटकारा पाना है। .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) में संपादन का सुझाव देता हूं >>

मुझे संदेह है कि यह आपकी .bashrcफ़ाइल में बग को खोजने और ठीक करने के लिए पर्याप्त जानकारी हो सकती है । यदि आपको और सहायता की आवश्यकता है, तो आपको निश्चित रूप से विश्लेषण के लिए उस फ़ाइल की पूरी सामग्री पोस्ट करनी चाहिए। (यह केवल संयोग से है कि आपकी समस्या एक बार-बार सामना करने के लिए पर्याप्त रूप से सामना करना पड़ा, और एक पर्याप्त पारदर्शी त्रुटि संदेश के साथ, इस तरह से एक सामान्य उत्तर देना संभव है।)


2
धन्यवाद! ऐसा विस्तृत जवाब। मेरे मामले में चारों ओर जगह = मुद्दा था। मैं कुछ समय के लिए इससे जूझ रहा था।
रेंगस

5

सुनिश्चित करें कि आप चला रहे हैं:

export ENV_VARIABLE

बजाय:

export $ENV_VARIABLE

अन्यथा, आप चर के बजाय चर का मान निर्यात करने का प्रयास कर रहे हैं, इसलिए आपको यह त्रुटि मिलेगी।


1

रिक्त स्थान और डॉलर चिह्न हटा दें उदाहरण के लिए यह उसी तरह से काम करता है जिस तरह आप SSH के माध्यम से वेब सर्वर पर django सेटिंग्स मॉड्यूल सेट कर सकते हैं:

export DJANGO_SETTINGS_MODULE=myapp.settings

0

जब आप उल्टे अल्पविराम (वेब ​​से) के साथ कुछ कॉपी करते हैं और अपने वातावरण या bashrc फ़ाइल को अपडेट करते हैं, तो मैंने इसे बहुत बार देखा है।

शुरू करने के लिए एक अच्छी जगह सिर्फ मैन्युअल रूप से उल्टे अल्पविराम को पेस्ट की गई सामग्री में टाइप करना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.