সমস্যা, পুনরায় দেখা
বেশ স্পষ্টভাবে, ম্যানুয়ালটি এই বিষয়টিতে বিভ্রান্ত করছে। গনুহ ব্যাশ ম্যানুয়াল বলেছেন:
শেল পরামিতিগুলিতে বর্ণিত কোনও সাধারণ কমান্ড বা ফাংশনের পরিবেশ [নোট করুন যে এটি বিল্টিনগুলি বাদ দেয়] সাময়িকভাবে প্যারামিটার অ্যাসাইনমেন্ট সহ এটি উপস্থাপনের মাধ্যমে বাড়ানো যেতে পারে। এই অ্যাসাইনমেন্ট বিবৃতিগুলি কেবল সেই আদেশ দ্বারা প্রদর্শিত পরিবেশকে প্রভাবিত করে।
আপনি কি সত্যিই বাক্য বিশ্লেষণ যদি, এটা কি বলছে যে পরিবেশ কমান্ড / ফাংশন জন্য রুপান্তরিত করা হয়েছে, কিন্তু না পিতা বা মাতা প্রক্রিয়ার জন্য পরিবেশ। সুতরাং, এটি কাজ করবে:
$ TESTVAR=bbb env | fgrep TESTVAR
TESTVAR=bbb
কারণ এনভিনিউ কমান্ডের জন্য পরিবেশটি কার্যকর করার আগে এটি পরিবর্তন করা হয়েছিল। তবে এটি কাজ করবে না:
$ set -x; TESTVAR=bbb echo aaa $TESTVAR ccc
+ TESTVAR=bbb
+ echo aaa ccc
aaa ccc
কারণ যখন শেল দ্বারা পরামিতি প্রসারিত হয়।
দোভাষী পদক্ষেপ
সমস্যার আরেকটি অংশ হ'ল বাশ তার দোভাষীর জন্য এই পদক্ষেপগুলি সংজ্ঞায়িত করে :
- কোনও ফাইল (শেল স্ক্রিপ্টস দেখুন) থেকে ইনপুট পড়বে, -c ইনভোকেশন বিকল্পের জন্য আর্গুমেন্ট হিসাবে সরবরাহ করা স্ট্রিং থেকে (দাওয়াত দাওয়াত দেখুন) বা ব্যবহারকারীর টার্মিনাল থেকে input
- উদ্ধৃতিতে বর্ণিত উদ্ধৃতি বিধি মেনে শব্দ এবং অপারেটরগুলিতে ইনপুটটি ভেঙে দেয়। এই টোকেনগুলি মেটাচার্যাক্টর দ্বারা পৃথক করা হয়। এলিয়াস সম্প্রসারণ এই পদক্ষেপ দ্বারা সম্পাদিত হয় (উপাধি দেখুন)।
- টোকেনগুলি সাধারণ এবং যৌগিক কমান্ডগুলিতে পার্স করে (শেল কমান্ডগুলি দেখুন)।
- বিভিন্ন শেল বিস্তৃতি (শেল প্রসার দেখুন) সম্পাদন করে, প্রসারিত টোকেনগুলি ফাইলের তালিকায় (ফাইলের নাম সম্প্রসারণ দেখুন) এবং আদেশ এবং আর্গুমেন্টগুলি ভেঙে দেয়।
- কোনও প্রয়োজনীয় পুনর্নির্দেশগুলি সম্পাদন করে (পুনর্নির্দেশগুলি দেখুন) এবং যুক্তি তালিকা থেকে পুনঃনির্দেশ অপারেটর এবং তাদের অপারেশনগুলি সরিয়ে দেয়।
- কমান্ড কার্যকর করে (দেখুন আদেশগুলি কার্যকর করা)
- Commandচ্ছিকভাবে কমান্ডটি সম্পন্ন হওয়ার জন্য অপেক্ষা করে এবং এর প্রস্থান স্থিতি সংগ্রহ করে (প্রস্থান স্থিতি দেখুন)।
এখানে যা ঘটছে তা হ'ল বিল্টিনগুলি তাদের নিজস্ব নির্বাহের পরিবেশটি পায় না, তাই তারা কখনই পরিবর্তিত পরিবেশ দেখতে পায় না। উপরন্তু, সহজ কমান্ড (যেমন / বিন / প্রতিধ্বনি) না একটি পরিবর্তিত ennvironment পেতে (যার কারণে env উদাহরণ চাকরি করতেন) কিন্তু শেল সম্প্রসারণ জায়গা নিচ্ছে বর্তমান পদক্ষেপ # 4 পরিবেশ।
অন্য কথায়, আপনি 'বিনা / প্রতিধ্বনিতে' আআ E টেস্টওয়ার সিসিসি 'পাস করছেন না; আপনি ইন্টারপোলটেড স্ট্রিং (বর্তমান পরিবেশে প্রসারিত) / বিন / প্রতিধ্বনিতে যাচ্ছেন। এই ক্ষেত্রে, যেহেতু বর্তমান পরিবেশের কোনও টেস্টওয়ার নেই , আপনি কেবল কমান্ডটিতে ' সিসিসি' দিয়ে ।
সারসংক্ষেপ
ডকুমেন্টেশন অনেক পরিষ্কার হতে পারে। ভাল জিনিস স্ট্যাক ওভারফ্লো আছে!
আরো দেখুন
http://www.gnu.org/software/bash/manual/bashref.html#Command- এক্সিকিউশন- পরিবেশ