কম্পিউটার

PowerShell এ এনভায়রনমেন্ট ভেরিয়েবল

এনভায়রনমেন্ট ভেরিয়েবল হল আপনার Linux, Mac, বা Windows কম্পিউটারের জন্য বিশ্বব্যাপী সেটিংস, যা কমান্ড চালানোর সময় সিস্টেম শেল ব্যবহারের জন্য সংরক্ষণ করা হয়। অনেকগুলি ইনস্টলেশন বা ব্যবহারকারী তৈরির সময় ডিফল্টরূপে সেট করা হয়৷

উদাহরণস্বরূপ, আপনি লগ ইন করার সময় আপনার হোম ডিরেক্টরিটি একটি পরিবেশ পরিবর্তনশীল হিসাবে সেট করা হয়৷ PowerShell-এ এটি কেমন দেখায় তা আপনার অপারেটিং সিস্টেমের উপর নির্ভর করে৷

উইন্ডোজে:

PS C:\Users\bogus> Get-Variable HOME -valueOnly
C:\Users\bogus

লিনাক্সে:

pwsh> Get-Variable HOME -valueOnly
HOME=/home/seth

ম্যাকে:

pwsh> Get-Variable HOME -valueOnly
HOME=/Users/bogus

আপনি সাধারণত এনভায়রনমেন্ট ভেরিয়েবলগুলি সরাসরি ব্যবহার করেন না, তবে প্রয়োজন অনুসারে সেগুলি পৃথক অ্যাপ্লিকেশন এবং ডেমন দ্বারা উল্লেখ করা হয়। যাইহোক, যখন আপনি ডিফল্ট সেটিংস ওভাররাইড করতে চান, বা যখন আপনার সিস্টেমের নিজের থেকে তৈরি করার কোনো কারণ নেই এমন নতুন সেটিংস পরিচালনা করার প্রয়োজন হলে পরিবেশ ভেরিয়েবলগুলি কার্যকর হতে পারে৷

এই নিবন্ধটি ওপেন সোর্স পাওয়ারশেল পরিবেশে পরিবেশের ভেরিয়েবল সম্পর্কে, এবং তাই এটি উইন্ডোজ, লিনাক্স এবং ম্যাকে চলমান পাওয়ারশেলের ক্ষেত্রে প্রযোজ্য। ব্যাশ শেল ব্যবহারকারীদের ব্যাশ পরিবেশের ভেরিয়েবল সম্পর্কে আমার নিবন্ধটি উল্লেখ করা উচিত।

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

পরিবেশ ভেরিয়েবল কি?

PowerShell-এ এনভায়রনমেন্ট ভেরিয়েবল হল বিশেষ ধরনের ভেরিয়েবল যা সিস্টেমকে অপারেটিং সিস্টেমের পরিবেশ সম্পর্কে তথ্য প্রদান করে। এনভায়রনমেন্ট ভেরিয়েবলের সাহায্যে, আপনি উইন্ডোজ রেজিস্ট্রিতে ভেরিয়েবল দেখতে এবং পরিবর্তন করতে পারেন, সেইসাথে একটি নির্দিষ্ট সেশনের জন্য সেট করা ভেরিয়েবল।

PowerShell-এ, পরিবেশ ভেরিয়েবলগুলি Env:-এ সংরক্ষণ করা হয় "ড্রাইভ", PowerShell পরিবেশ প্রদানকারীর মাধ্যমে অ্যাক্সেসযোগ্য , PowerShell এর একটি সাবসিস্টেম। এটি একটি ফিজিক্যাল ড্রাইভ নয়, একটি ভার্চুয়াল ফাইল সিস্টেম।

কারণ পরিবেশের ভেরিয়েবলগুলি Env:-এ বিদ্যমান ড্রাইভ, আপনাকে অবশ্যই Env: পূর্বে লিখতে হবে পরিবর্তনশীল নামের সাথে যখন আপনি তাদের উল্লেখ করেন। বিকল্পভাবে, আপনি আপনার কাজের অবস্থান Env: এ সেট করতে পারেন সেট-অবস্থান দিয়ে ড্রাইভ করুন কমান্ড যাতে আপনি সমস্ত পরিবেশের ভেরিয়েবলকে স্থানীয় ভেরিয়েবল হিসাবে বিবেচনা করতে পারেন:

PS> Set-Location Env:
PS> pwd

Path
----
Env:/

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

আপনি Get-ChildItem দিয়ে আপনার সিস্টেমে সেট করা সমস্ত পরিবেশের ভেরিয়েবল দেখতে পারেন Env: এর মধ্যে থেকে কমান্ড ড্রাইভ তালিকাটি দীর্ঘ, তাই আউট-হোস্ট-পেজিং এর মাধ্যমে আউটপুট পাইপ করুন পড়া সহজ করতে:

PS> Get-ChildItem | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles
MODULESHOME  /usr/share/Modules
OLDPWD       /home/seth
PATH         /opt/microsoft/powershell/6:/usr/share/Modules/bin
PSModulePath /home/seth/.local/share/powershell/Modules
PWD          /home/seth
[...]

আপনি যদি Env: এ না থাকেন ড্রাইভ করুন, তারপর আপনি Env:  যোগ করে একই জিনিস করতে পারেন আপনার আদেশে:

PS> Get-ChildItem Env: | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles

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

আপনি যদি একটি ভেরিয়েবলে স্থায়ী পরিবর্তন করতে চান, তাহলে আপনাকে অবশ্যই সেগুলিকে Windows এ Windows রেজিস্ট্রিতে বা শেল কনফিগারেশন ফাইলে পরিবর্তন করতে হবে (যেমন ~/.bashrc ) লিনাক্স বা ম্যাকে। আপনি যদি PowerShell-এ ভেরিয়েবল ব্যবহার করার সাথে পরিচিত না হন, তাহলে চালিয়ে যাওয়ার আগে PowerShell নিবন্ধে আমার ভেরিয়েবলগুলি পড়ুন৷

পরিবেশ ভেরিয়েবল কিসের জন্য ব্যবহার করা হয়?

বিভিন্ন এনভায়রনমেন্ট ভেরিয়েবল আপনার কম্পিউটারের মধ্যে বিভিন্ন সিস্টেম দ্বারা ব্যবহৃত হয়। আপনার PATH৷ ভেরিয়েবল আপনার শেলের জন্য অত্যাবশ্যক, উদাহরণস্বরূপ, কিন্তু জাভা বলতে অনেক কম তাৎপর্যপূর্ণ (যার পাথও রয়েছে, তবে সেগুলি সাধারণ সিস্টেম ফোল্ডারের পরিবর্তে গুরুত্বপূর্ণ জাভা লাইব্রেরির পথ)। যাইহোক, USER কে একটি পরিষেবার অনুরোধ করছে তা শনাক্ত করতে বিভিন্ন প্রক্রিয়া দ্বারা পরিবর্তনশীল ব্যবহার করা হয়৷

একটি ইনস্টলার উইজার্ড, যেমন ওপেন সোর্স Nullsoft Scriptable Install System (NSIS) ফ্রেমওয়ার্ক, যখন আপনি একটি নতুন অ্যাপ্লিকেশন ইনস্টল করছেন তখন আপনার পরিবেশের ভেরিয়েবল আপডেট করে। কখনও কখনও, যখন আপনি আপনার অপারেটিং সিস্টেমের উদ্দেশ্যে করা টুলসেটের বাইরে কিছু ইনস্টল করছেন, তখন আপনাকে একটি পরিবেশ পরিবর্তনশীল নিজেই পরিচালনা করতে হতে পারে। অথবা, আপনি আপনার পছন্দ অনুসারে একটি পরিবেশ পরিবর্তনশীল যোগ করতে বেছে নিতে পারেন।

এগুলি কিভাবে নিয়মিত ভেরিয়েবল থেকে আলাদা?

আপনি যখন একটি সাধারণ ভেরিয়েবল তৈরি করেন, তখন ভেরিয়েবলটিকে স্থানীয় হিসাবে বিবেচনা করা হয়, যার অর্থ এটি যে শেলটি তৈরি করেছে তার বাইরে এটি সংজ্ঞায়িত করা হয় না।

উদাহরণস্বরূপ, একটি ভেরিয়েবল তৈরি করুন:

PS> Set-Variable -Name VAR -Value "example"
PS> gv VAR -valueOnly
example

একটি নতুন শেল চালু করুন, এমনকি আপনার বর্তমান শেল থেকেও:

PS> pwsh
PS c:\> gv VAR -valueOnly
gv : Cannot find a variable with the name 'example'.

অন্যদিকে, পরিবেশের ভেরিয়েবলগুলিকে পরিধিতে বিশ্বব্যাপী বোঝানো হয়। এগুলি শেল থেকে আলাদাভাবে বিদ্যমান যা তাদের তৈরি করেছে এবং অন্যান্য প্রক্রিয়াগুলিতে উপলব্ধ৷

আপনি কিভাবে একটি পরিবেশ পরিবর্তনশীল সেট করবেন?

একটি এনভায়রনমেন্ট ভেরিয়েবল সেট করার সময়, $Env: ব্যবহার করে আপনার স্পষ্ট হওয়া উচিত যে এটি একটি পরিবেশ পরিবর্তনশীল স্বরলিপি:

PS Env:/> $Env:FOO = "hello world"
PS Env:/> Get-ChildItem FOO
hello world

একটি পরীক্ষা হিসাবে, একটি নতুন সেশন চালু করুন এবং আপনার তৈরি করা ভেরিয়েবলটি অ্যাক্সেস করুন। কারণ ভেরিয়েবলটি একটি এনভায়রনমেন্ট ভেরিয়েবল, যদিও, আপনাকে অবশ্যই এটি $Env: দিয়ে প্রিপেন্ড করতে হবে :

PS Env:/> pwsh
PS c:\> $Env.FOO
hello world

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

আপনি কিভাবে আপনার প্রোফাইলে পরিবেশ ভেরিয়েবল সেট করবেন?

একটি এনভায়রনমেন্ট ভেরিয়েবলকে সেশন জুড়ে টিকে থাকতে বাধ্য করতে, আপনাকে এটিকে আপনার PowerShell প্রোফাইলে যোগ করতে হবে, যেমন আপনার CurrentUser, AllHosts প্রোফাইল, HOME/Documents/Profile.ps1-এ অবস্থিত৷ :

PS> Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:FOO = "hello world"'

এই লাইনটি যোগ করার সাথে সাথে, লঞ্চ করা যেকোন পাওয়ারশেল সেশন FOOকে ইনস্ট্যান্টিয়েট করে পরিবেশ পরিবর্তনশীল এবং এর মান হ্যালো ওয়ার্ল্ড এ সেট করে .

বর্তমানে PowerShell সেশন নিয়ন্ত্রণ করে ছয়টি ডিফল্ট প্রোফাইল রয়েছে, তাই আরও তথ্যের জন্য Microsoft dev ব্লগ পড়ুন।

আপনি কিভাবে নতুন পরিবেশ ভেরিয়েবল আবিষ্কার করবেন?

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

তাই প্রশ্ন হল:কোন পরিবেশের ভেরিয়েবলগুলি অর্থপূর্ণ তা আপনি কীভাবে খুঁজে পাবেন? উত্তরটি একটি অ্যাপ্লিকেশনের ডকুমেন্টেশনে রয়েছে।

পাইথন, উদাহরণস্বরূপ, আপনার পথে উপযুক্ত পাইথন পাথ যোগ করার প্রস্তাব দেয় ইনস্টল করার সময় পরিবেশ পরিবর্তনশীল। [দ্রষ্টব্য:PATH?]৷ আপনি যদি প্রত্যাখ্যান করেন, তাহলে আপনি নিজেই মান সেট করতে পারেন যে আপনি জানেন কিভাবে পরিবেশ ভেরিয়েবল পরিবর্তন করতে হয়।

আপনার ইনস্টল করা যেকোনো অ্যাপ্লিকেশনের ক্ষেত্রেও এটি সত্য:ইনস্টলার আপনার পরিবেশে উপযুক্ত ভেরিয়েবল যোগ করবে বলে আশা করা হচ্ছে, তাই আপনাকে কখনই Env: পরিবর্তন করতে হবে না ম্যানুয়ালি আপনি যদি একটি অ্যাপ্লিকেশন ডেভেলপ করেন, তাহলে আপনার ব্যবহারকারীদের জন্য আপনার ইনস্টলারও একই কাজ করবে৷

পৃথক অ্যাপ্লিকেশনের জন্য উল্লেখযোগ্য ভেরিয়েবল আবিষ্কার করতে, তাদের ব্যবহারকারী এবং বিকাশকারী ডকুমেন্টেশন পড়ুন।


  1. পরিবেশের ভেরিয়েবলের জন্য রুবিস্ট গাইড

  2. Direnv - লিনাক্সে প্রকল্প-নির্দিষ্ট পরিবেশের ভেরিয়েবল পরিচালনা করুন

  3. রুবিতে পরিবেশের ভেরিয়েবলগুলি কীভাবে ব্যবহার করবেন

  4. Windows 10 এ পরিবেশ ভেরিয়েবল কিভাবে সেট করবেন