শেল ভেরিয়েবল বনাম পরিবেশ পরিবর্তনশীল, উভয়টির একই নাম থাকলে কোনটি পছন্দ হয়?


10

বাশে নিম্নলিখিত টাইপ করুন:

env | grep USER

এবং

set | grep USER

উভয় সময় একই ব্যবহারকারীর নাম দেয়।

আমি কীভাবে জানব, উদাহরণস্বরূপ echo $USERশেল বা পরিবেশের ভেরিয়েবল প্রদর্শিত হলে টাইপ করার সময় ?

উত্তর:


14

জন্য POSIX সামঞ্জস্যপূর্ণ শাঁস (ব্যাশ সহ) মান বলেছেন:

২.৩.৩ শেল ভেরিয়েবল
ভেরিয়েবলগুলি পরিবেশ থেকে শুরু করা হবে [...] যদি পরিবেশ থেকে কোনও পরিবর্তনশীল আরম্ভ করা হয়, তা অবিলম্বে রফতানির জন্য চিহ্নিত করা হবে; রপ্তানি বিশেষ অন্তর্নির্মিত দেখুন। নতুন ভেরিয়েবলগুলি ভেরিয়েবল অ্যাসাইনমেন্ট, [ইত্যাদি] দিয়ে সংজ্ঞায়িত এবং আরম্ভ করা যেতে পারে ]

এবং সম্পর্কে export:

export name[=word]...
শেলটি নির্দিষ্ট নামগুলির সাথে সম্পর্কিত ভেরিয়েবলগুলিতে রফতানীর বৈশিষ্ট্য দেবে, যার ফলে পরবর্তীকালে সম্পাদিত কমান্ডগুলির পরিবেশে তাদের উপস্থিতি ঘটবে।

শেল এর দৃষ্টিকোণ থেকে, শুধুমাত্র ভেরিয়েবল আছে। শেল শুরু হওয়ার সাথে সাথে তাদের কিছু পরিবেশ থেকে এসেছে এবং তাদের মধ্যে কিছু শেল শুরু হওয়ার প্রক্রিয়াগুলির পরিবেশে রফতানি হতে পারে।

("পরিবেশ" আসলে প্রসেসের কাছে প্রবাহিত স্ট্রিংগুলির একগুচ্ছ প্রক্রিয়া শুরু হয় the অন্যান্য প্রক্রিয়াগুলি শুরু করা যখন অন্য জিনিস হতে পারে তবে অবশ্যই পরিবেশের সমস্ত পরিবর্তনগুলি আবার পাস করা স্বাভাবিক)


আপনি যদি কিছু নন-পসিক্স শেল ব্যবহার করে থাকেন তবে যেমন cshজিনিসগুলি আলাদা হতে পারে:

$ csh
% echo $foo
foo: Undefined variable.
% setenv foo bar
% echo $foo
bar
% set foo=asdf
% echo $foo
asdf
% env |grep foo
foo=bar
% exit

1
মনে রাখবেন বোর্ন শেল, সিএসএসের মতো পরিবেশ ভেরিয়েবল থেকে শেল ভেরিয়েবল সূচনা করে। তবে শেল ভেরিয়েবলগুলি সংশোধন করা যদি আপনি সেগুলি রপ্তানি না করেন তবে সংশ্লিষ্ট পরিবেশের পরিবর্তনশীলকে প্রভাবিত করে না। এটি এমন কিছু যা কর্ন শেল দ্বারা ভেঙে গেছে (এবং পসিক্স দ্বারা নির্দিষ্ট করা)। এজন্য আপনার এখন যে শেল ভেরিয়েবলের নাম ব্যবহার করা উচিত সে সম্পর্কে আপনার সতর্কতা অবলম্বন করা উচিত যাতে আপনি আপনার স্ক্রিপ্টে চালিত আদেশগুলি প্রভাবিত করতে পারে এমন এনভ ভার্সগুলি সংশোধন করছেন না।
স্টাফেন চেজেলাস

4

এগুলি এক এবং একই পরিবর্তনশীল vari শেলটিতে, অন্যান্য বেশিরভাগ প্রোগ্রামিং ভাষার বিপরীতে, পরিবেশের ভেরিয়েবল এবং শেল ভেরিয়েবল একই নামের স্থান ভাগ করে দেয়। শেলের মধ্যে একটি এনভায়রনমেন্ট ভেরিয়েবল হ'ল শেল ভেরিয়েবল যা রফতানি করা হয়েছিল export

উদাহরণস্বরূপ, আপনার আগের প্রশ্নের আমার উত্তর দেখুন " শেল ভেরিয়েবল এবং এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে ব্যবহারের পার্থক্য কী? "


আমি আপনার ব্যাখ্যাটি পুনরায় পাঠ করব, আপনার উত্তরটি বুঝতে পারার আগে আমাকে প্রথমে কিছু জিনিস শিখতে হবে।
শারকান্ট

@ শরকান্ত কোনও উদ্বেগের বিষয় নয়। আমি যদি কিছু গুলিয়ে ফেলছি তবে কেবল আমাকে বলুন এবং আমি স্পষ্ট করার চেষ্টা করব। ইল্কাচ্ছুর উত্তরও ভাল।
কুসালানন্দ

না, আমি এটি মনে করি না, আপনার ব্যাখ্যা করার একটি ভাল স্টাইল রয়েছে, এটি কেবল আমার জ্ঞানের অভাব যা তাদের এখনও লালন করতে পারে না।
হাঙ্গরত

2

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

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