শেল ভেরিয়েবল
শেল ভেরিয়েবলগুলি এমন ভেরিয়েবল যাগুলির স্কোপ বর্তমান শেল সেশনে রয়েছে, উদাহরণস্বরূপ একটি ইন্টারেক্টিভ শেল সেশন বা স্ক্রিপ্টে।
আপনি অব্যক্ত নামটিতে একটি মান নির্ধারণ করে শেল ভেরিয়েবল তৈরি করতে পারেন:
var="hello"
শেল ভেরিয়েবলের ব্যবহার হ'ল বর্তমান সেশনে ডেটা ট্র্যাক করা। শেল ভেরিয়েবলের সাধারণত লোয়ার-কেস অক্ষরের নাম থাকে।
পরিবেশের পরিবর্তনশীল
পরিবেশের পরিবর্তনশীল হ'ল শেল ভেরিয়েবল যা রফতানি করা হয়েছে। এর অর্থ এটি কেবলমাত্র এটি তৈরি করা শেল সেশনেই নয়, যে অধিবেশন থেকে শুরু হওয়া কোনও প্রক্রিয়া (কেবল শাঁস নয়) এর ক্ষেত্রেও এটি একটি চলক হিসাবে দৃশ্যমান হবে।
VAR="hello" # shell variable created
export VAR # variable now part of the environment
অথবা
export VAR="hello"
একবার একটি শেল পরিবর্তনশীল রপ্তানি করা হয়েছে, এটা রপ্তানি থাকে না হওয়া পর্যন্ত সেট করা থাকে না, অথবা পর্যন্ত তার "রপ্তানি সম্পত্তি" (সঙ্গে মুছে ফেলা হবে export -n
মধ্যে bash
), তাই সাধারণত পুনরায় রপ্তানি এটা কোন প্রয়োজন নেই। কোনও ভেরিয়েবলটিকে unset
মুছে ফেলার সাথে এটি সেট করে দেওয়া (এটি পরিবেশের পরিবর্তনশীল কিনা তা বিবেচনা করে নয়)।
অ্যারে এবং এসোসিয়েটিভ হ্যাশ ইন bash
এবং অন্যান্য শেলগুলি পরিবেশ পরিবর্তনশীল হয়ে উঠতে রফতানি করা যাবে না। পরিবেশের ভেরিয়েবলগুলি অবশ্যই সরল ভেরিয়েবল হতে হবে যার মানগুলি স্ট্রিং হয় এবং এগুলির প্রায়শই নাম থাকে যা বড় হাতের অক্ষরের সমন্বয়ে থাকে।
এনভায়রনমেন্ট ভেরিয়েবলের ব্যবহার হ'ল বর্তমান শেল সেশনে ডাটা ট্র্যাক রাখা, তবে কোনও শুরু হওয়া প্রক্রিয়াটিকে সেই ডেটার অংশ নিতে অনুমতি দেওয়া। এর সাধারণ কেসটি হ'ল PATH
পরিবেশের পরিবর্তনশীল, যা শেলটিতে সেট করা যেতে পারে এবং পরে কোনও প্রোগ্রাম যা তাদের কোনও পুরো পথ নির্দিষ্ট না করেই প্রোগ্রামগুলি শুরু করতে চায় তার দ্বারা ব্যবহৃত হতে পারে।
কোনও প্রক্রিয়াতে পরিবেশের ভেরিয়েবলের সংগ্রহকে প্রায়শই "প্রক্রিয়ার পরিবেশ" হিসাবে উল্লেখ করা হয়। প্রতিটি প্রক্রিয়াটির নিজস্ব পরিবেশ রয়েছে।
পরিবেশের ভেরিয়েবলগুলি কেবল "ফরোয়ার্ড" করা যায়, অর্থাত্ একটি শিশু প্রক্রিয়া করতে পারে তার পিতামাতার প্রক্রিয়াতে পরিবেশের পরিবর্তনগুলি কখনই পরিবর্তন না এবং এটি শুরু করার পরে কোনও শিশু প্রক্রিয়ার জন্য পরিবেশ স্থাপনের পরিবর্তে, পিতামাতার প্রক্রিয়াটি কোনওটির বিদ্যমান পরিবেশ পরিবর্তন করতে পারে না শিশু প্রক্রিয়া
পরিবেশের ভেরিয়েবলগুলি env
(কোনও যুক্তি ছাড়াই) তালিকাভুক্ত হতে পারে । এগুলি ছাড়াও, তারা শেল সেশনে অ-রফতানি শেল ভেরিয়েবলগুলির মতো একই প্রদর্শিত হয়। এটি শেলের জন্য কিছুটা বিশেষ কারণ অন্যান্য বেশিরভাগ প্রোগ্রামিং ভাষা সাধারণত পরিবেশের ভেরিয়েবলগুলির সাথে "সাধারণ" ভেরিয়েবলকে আন্তঃনির্মিত করে না (নীচে দেখুন)।
env
বর্তমান সেশনে সেট না করে কোনও প্রক্রিয়ার পরিবেশে এক বা একাধিক এনভায়রনমেন্ট ভেরিয়েবলের মান সেট করতে ব্যবহার করা যেতে পারে:
env CC=clang CXX=clang++ make
এটি make
এনভায়রনমেন্ট ভেরিয়েবলটি CC
মান clang
এবং CXX
সেট এ সেট করে শুরু হয় clang++
।
এটি প্রক্রিয়াটির জন্য পরিবেশ সাফ করার জন্যও ব্যবহৃত হতে পারে:
env -i bash
এটি শুরু হয় bash
তবে বর্তমান পরিবেশটিকে নতুন bash
প্রক্রিয়াতে স্থানান্তরিত করে না ( এটির শেল ইনিশিয়ালাইজেশন স্ক্রিপ্টগুলি থেকে নতুন তৈরি করার সাথে এটির পরিবেশের পরিবর্তনশীলগুলি থাকবে )।
পার্থক্যের উদাহরণ
$ var="hello" # create shell variable "var"
$ bash # start _new_ bash session
$ echo "$var" # no output
$ exit # back to original shell session
$ echo "$var" # "hello" is outputted
$ unset var # remove variable
$ export VAR="hello" # create environment variable "VAR"
$ bash
$ echo "$VAR" # "hello" is outputted since it's exported
$ exit # back to original shell session
$ unset VAR # remove variable
$ ( export VAR="hello"; echo "$VAR" ) # set env. var "VAR" to "hello" in subshell and echo it
$ echo "$VAR" # no output since a subshell has its own environment
অন্যান্য ভাষাসমূহ
বেশিরভাগ প্রোগ্রামিং ভাষায় লাইব্রেরির ফাংশন রয়েছে যা পরিবেশের ভেরিয়েবলগুলি পেতে এবং সেট করতে দেয়। নোট করুন যেহেতু এনভায়রনমেন্ট ভেরিয়েবলগুলি সাধারণ কী-মান সম্পর্কের হিসাবে সংরক্ষণ করা হয়, তাই তারা সাধারণত ভাষার "ভেরিয়েবল" হয় না। একটি প্রোগ্রাম কী (এনভায়রনমেন্ট ভেরিয়েবলের নাম) এর সাথে সম্পর্কিত (যা সর্বদা একটি চরিত্রের স্ট্রিং) মান আনতে পারে, তবে তারপরে এটি একটি পূর্ণসংখ্যায় রূপান্তর করতে হবে বা যে জাতীয় ডেটা টাইপ করে ভাষাটি মানটি প্রত্যাশা করে।
সি, বিভিন্ন পরিবেশের ব্যবহার অ্যাক্সেস করা যেতে পারে getenv()
, setenv()
, putenv()
এবং unsetenv()
। এই রুটিনগুলির সাথে তৈরি ভেরিয়েবলগুলি সি প্রোগ্রাম শুরু হওয়া যে কোনও প্রক্রিয়া দ্বারা একইভাবে উত্তরাধিকার সূত্রে প্রাপ্ত হয়।
অন্যান্য ভাষাগুলিতে একই জিনিস সম্পাদনের জন্য বিশেষ ডেটা স্ট্রাকচার থাকতে পারে, যেমন %ENV
পার্লের হ্যাশ বা ENVIRON
বেশিরভাগ বাস্তবায়নে এসোসিয়েটিভ অ্যারে awk
।