পরিবেশের ভেরিয়েবল সেট করার পরে কীভাবে "বৈধ সনাক্তকারী নয়" ত্রুটিটি ঠিক করবেন?


12

আমি উবুন্টু 14.04 এলটিএসে কোকোস 2 ডিএক্স সেটআপ করার চেষ্টা করছি তবে পরিবেশগত পরিবর্তনগুলি (ইন .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এটিকে রফতানি করে এবং পৃথকভাবে চলকটি রফতানি করে valueBoth উভয়ই সাধারণ ভুল))

  3. ভেরিয়েবলের মানটির অংশগুলি ফাঁক দিয়ে পৃথক করে। বিভিন্ন পরিবেশের করতে খালি জায়গা থাকা, কিন্তু বাস্তবে তারা খুব কমই এনভায়রনমেন্ট ভেরিয়েবল মাঠে বিভাজক হিসেবে ব্যবহৃত হয়। যখন কোনও একক ভেরিয়েবল ইচ্ছাকৃতভাবে একাধিক পাথ থাকে, সাধারণত :তাদের পৃথক করতে ব্যবহৃত হয়।

  4. ভেরিয়েবলগুলিকে বরাদ্দ করার সময় স্পেসগুলি উদ্ধৃত করা হয় না। কখনও কখনও একটি পরিবেশের ভেরিয়েবলের মানটিতে একটি স্থান থাকে। উদাহরণস্বরূপ, এটি সম্ভবত এমন একটি ডিরেক্টরিটির নাম হতে পারে যা সত্যিই একটি স্থান থাকে। সেক্ষেত্রে যে কোনও ফাঁকির উদ্ধৃতি দেওয়া দরকার।

    এটি করার একটি উপায় হ'ল তাদের আগে \। দেখুন আমি কীভাবে সিডি কমান্ডকে দেওয়া প্রথম বন্ধনীগুলি রক্ষা করতে পারি? এবং অন্যান্য উপায়ে তথ্যের জন্য ফাইল মুছতে অক্ষম - উত্তরে উপস্থাপিত পদ্ধতিগুলি প্রযোজ্য, যদিও কোনও প্রশ্নই বিশেষত পরিবেশের ভেরিয়েবলগুলিকে নির্ধারণের বিষয়ে নয়।

    উদাহরণস্বরূপ, 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

স্পেস এবং ডলারের চিহ্ন সরিয়ে ফেলুন উদাহরণস্বরূপ, এটি এসএসএইচের মাধ্যমে কোনও ওয়েব সার্ভারে জাঙ্গো সেটিংস মডিউল সেট করতে পারে ঠিক একইভাবে কাজ করে:

export DJANGO_SETTINGS_MODULE=myapp.settings

0

যখন আপনি ইনভার্টড কমা (ওয়েব থেকে) দিয়ে কোনও কিছু অনুলিপি করে থাকেন এবং আপনার পরিবেশ বা বাশার্ক ফাইল আপডেট করেন তখন আমি এটি বেশ ঘন ঘন ঘটতে দেখেছি।

শুরু করার জন্য একটি ভাল জায়গা হ'ল ম্যানুয়ালি পেস্ট করা সামগ্রীতে উল্টো কমা টাইপ করা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.