"এক্সপোর্ট" কমান্ডের ব্যবহার কী?


12

আমি একটি টার্মিনাল উইন্ডোতে পরিবেশের পরিবর্তনশীল তৈরি করেছি এবং এটি অন্য টার্মিনাল উইন্ডোতে প্রতিধ্বনিত করার চেষ্টা করেছি। এটি কিছুই প্রদর্শন করে না।

$TEST=hello

এর পরে আমি এটিকে রফতানি করেছি এবং আবার echoএটির জন্য অন্য একটি টার্মিনাল উইন্ডোতে চেষ্টা করেছি। আগের মত ফলাফল ছিল।

export TEST 

তবে আমি যদি লগইনে একই কোডটি চালিত করি (কোডটিতে ~/.profileফাইলটি সংযোজন করা ) ভেরিয়েবলগুলি কোনও টার্মিনাল উইন্ডো ব্যবহার করা যেতে পারে। এখানে কি হচ্ছে? টার্মিনালে কোড সম্পাদন করা এবং লগইনে একই কার্যকরকরণের মধ্যে ভিন্নতা কী?

উত্তর:


26

exportএকটি পরিবর্তনশীল কিছু তৈরি করে যা শিশু প্রক্রিয়া পরিবেশে অন্তর্ভুক্ত করা হবে। এটি ইতিমধ্যে বিদ্যমান পরিবেশকে প্রভাবিত করে না। সাধারণভাবে একটি টার্মিনালে ভেরিয়েবল সেট করার কোনও উপায় নেই এবং এটি স্বয়ংক্রিয়ভাবে অন্য টার্মিনালে প্রদর্শিত হবে, প্রতিটি প্রক্রিয়াটির জন্য পরিবেশটি নিজস্বভাবে প্রতিষ্ঠিত হয়।

এটিকে আপনার .profileএতে যুক্ত করা যাতে আপনার পরিবেশটি প্রতিবার লগ ইন করার পরে সেই নতুন পরিবর্তনশীলকে অন্তর্ভুক্ত করার জন্য সেটআপ হয়ে যায়। সুতরাং এটি একটি শেল থেকে অন্য শেল থেকে রফতানি হচ্ছে না, পরিবর্তে এটি একটি নতুন শেলকে প্রাথমিক পরিবেশ সেট আপ করার সময় এটি অন্তর্ভুক্ত করার নির্দেশ দিচ্ছে।


1

প্রতিটি প্রক্রিয়াতে বিভিন্ন বৈশিষ্ট্য রয়েছে যা প্রক্রিয়াটি পৃথকভাবে এবং অন্যান্য প্রক্রিয়া থেকে স্বতন্ত্রভাবে সেট করতে পারে। উদাহরণগুলি হ'ল সংস্থান সীমা, উমাস্ক, বর্তমান ডিরেক্টরি, পরিবেশের ভেরিয়েবল এবং আরও কিছু। প্রক্রিয়া তৈরির পরে ( fork()সিস্টেম কলের মাধ্যমে) শিশু পিতা-মাতার কাছ থেকে এই বৈশিষ্ট্যগুলি উত্তরাধিকার সূত্রে পায়। এর পরে শিশু প্রক্রিয়া এই বৈশিষ্ট্যগুলি নির্বিচারে সেট করতে পারে। (কিছু সীমাবদ্ধতা প্রযোজ্য, কোনও প্রক্রিয়া হার্ড রিসোর্স সীমা বাড়াতে পারে না বা তার বর্তমান ডিরেক্টরিটি কোনও ডিরেক্টরিতে পরিবর্তিত করতে পারে যার জন্য তার এক্সিকিউটিভ অনুমতি নেই))

শুধুমাত্র কয়েকটি প্রোগ্রাম তাদের পরিবেশের পরিবর্তনগুলি পরিবর্তন করে, বেশিরভাগ বিরক্ত হয় না। মনে করুন পরের ঘটনাটি। সুতরাং যদি কোনও শিশু প্রক্রিয়া নিজেই আরও শিশু তৈরি করে, তবে এই প্রক্রিয়াগুলিতে দাদির মতো একই পরিবেশের পরিবর্তনশীল থাকবে vari ইত্যাদি।

এখন, একটি শেলের অনেকগুলি ভেরিয়েবল রয়েছে যা দিয়ে দেখা যায় set(বোর্ন শেল প্রকারের শেলগুলিতে, সি শেল সম্পর্কে ডান্নো)। এই ভেরিয়েবলগুলি exportএডি না করা থাকলে পরিবেশের পরিবর্তনশীল নয় । পরিবেশের পরিবর্তনশীলগুলির সাথে দেখা যায় env। আপনি যদি শেল কমান্ড লাইন থেকে কোনও প্রোগ্রাম চালু করেন তবে প্রোগ্রামটি শেল থেকে পরিবেশের ভেরিয়েবলের উত্তরাধিকারী হবে। অনুরূপভাবে একটি শেল স্ক্রিপ্ট থেকে চালু করা একটি প্রোগ্রামের জন্য।

অতএব, লগইন করার পরে একটি শেল থাকে যা প্রোফাইল ডেটা পড়ে (যেমন ~/.profile) এবং কার্যত সমস্ত বাচ্চা, নাতি-নাতনি ইত্যাদিতে তাদের উত্তরাধিকার সূত্রে প্রাপ্ত হয়। এইভাবে পরিবেশ পরিবর্তনশীল সেটিংস লগইন সেশনের মধ্যে লঞ্চ হওয়া অন্যান্য প্রোগ্রামগুলিতে লগইন শেল বা লগইন স্ক্রিপ্ট থেকে নীচে নেমে আসে।

আমি একটি টার্মিনাল উইন্ডোতে পরিবেশের পরিবর্তনশীল তৈরি করেছি এবং এটি অন্য টার্মিনাল উইন্ডোতে প্রতিধ্বনিত করার চেষ্টা করেছি। এটি কিছুই প্রদর্শন করে না।

উপরের ব্যাখ্যা দ্বারা, এটি প্রত্যাশিত ফলাফল। কোনও প্রক্রিয়ার পরিবেশে পরিবর্তনগুলি এই প্রক্রিয়াটির কেবলমাত্র শিশুদেরই প্রভাবিত করে যা এখন থেকে তৈরি করা হয়েছে, বিদ্যমানগুলি নয়।

$TEST=hello

পরিবর্তনশীল প্রসারণ অক্ষম করা বা $TESTইতিমধ্যে উপযুক্ত মান না থাকলে এটি কোনওভাবেই কাজ করার সম্ভাবনা নেই । আপনি যদি helloভেরিয়েবলকে বরাদ্দ করতে চান TESTতবে আপনাকে বলতে হবে TEST=hello(দ্রষ্টব্য: না $)।

এর পরে আমি এটিকে রফতানি করেছি এবং আবার echoএটির জন্য অন্য একটি টার্মিনাল উইন্ডোতে চেষ্টা করেছি। আগের মত ফলাফল ছিল।

আবারও এটি প্রত্যাশিত ফলাফল।

তবে আমি যদি লগইনে একই কোডটি চালিত করি (কোডটিতে ~/.profileফাইলটি সংযোজন করা ) ভেরিয়েবলগুলি কোনও টার্মিনাল উইন্ডো ব্যবহার করা যেতে পারে।

কারণ টার্মিনালের শেলটি শেলের একটি বংশধর যা পরিবেশ সেটিংস থেকে পড়ে ~/.profileএবং সেগুলি এই উত্তরাধিকার সূত্রে প্রাপ্ত হয়।

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