এনভায়রনমেন্ট ভেরিয়েবল হলো আপনার লিনাক্স, ম্যাক, বা উইন্ডোজ কম্পিউটারের গ্লোবাল সেটিংস, সিস্টেম শেল দ্বারা কমান্ড এক্সিকিউট করার সময় ব্যবহার করার জন্য সংরক্ষিত। অ principis বয় osl ইনস্টলেশন বা ইউজার ক্রিয়েশনের সময় ডিফল্টভাবে সেট করা হয়।
উদাহরণস্বরূপ, আপনার হোম ডিরেক্টরি একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সেট থাকে আপনি লগইন করার সময়। পাওয়ারশেলে এটি কীভাবে দেখাবে সেটি আপনার অপারেটিং সিস্টেমের ওপর নির্ভর করে।
উইন্ডোজে:
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
আপনি সাধারণত এনভায়রনমেন্ট ভেরিয়েবল সরাসরি ব্যবহার করেন না, কিন্তু সেগুলো আলাদা আলাদা অ্যাপ্লিকেশন এবং ডিমন দ্বারা প্রয়োজন অনুযায়ী রেফারেন্স করা হয়। যাইহোক, এনভায়রনমেন্ট ভেরিয়েবল উপকারী হতে পারে যখন আপনি ডিফল্ট সেটিংস ওভাররাইড করতে চান, অথবা যখন আপনাকে নতুন সেটিংস ম্যানেজ করতে হয় যেগুলো আপনার সিস্টেম নিজের থেকে তৈরি করার কোনো কারণ নেই।
এই আর্টিকেলটি ওপেন সোর্স পাওয়ারশেল এনভায়রনমেন্টে এনভায়রনমেন্ট ভেরিয়েবল নিয়ে, তাই এটি পাওয়ারশেল উইন্ডোজ, লিনাক্স, এবং ম্যাক-এ চলমান সকল ক্ষেত্রে প্রযোজ্য। বাশ শেল ব্যবহারকারীদের আমার বাশ এনভায়রনমেন্ট ভেরিয়েবল संबंधি আর্টিকেল পড়তে বলা হয়েছে।
এই আর্টিকেলের জন্য, আমি পাওয়ারশেল ওপেন সোর্স অপারেটিং সিস্টেম লিনাক্সে চালিয়েছি। কমান্ডগুলো একই সব প্ল্যাটফর্মে, যদিও আউটপুট ভিন্ন হবে (উদাহরণস্বরূপ, কाफি অসম্ভব যে আপনার ইউজারনেম seth)।
এনভায়রনমেন্ট ভেরিয়েবল কী?
পাওয়ারশেলে এনভায়রনমেন্ট ভেরিয়েবল হলো ভেরিয়েবলের একটি স্পেশাল ধরন যা অপারেটিং সিস্টেম এনভায়রনমেন্ট সম্পর্কে সিস্টেমকে তথ্য প্রদান করে। এনভায়রনমেন্ট ভেরিয়েবল দিয়ে আপনি উইন্ডোজ রেজিস্ট্রির ভেরিয়েবল এবং একটি নির্দিষ্ট সেশনের জন্য সেট করা ভেরিয়েবল দেখতে ও পরিবর্তন করতে পারেন।
পাওয়ারশেলে, এনভায়রনমেন্ট ভেরিয়েবলগুলো Env: "ড্রাইভ"-এ সংরক্ষিত থাকে, যা পাওয়ারশেল এনভায়রনমেন্ট প্রোভাইডার-এর মাধ্যমে অ্যাক্সেসযোগ্য, পাওয়ারশেলের একটি সাবসিস্টেম। এটি কোনো ফিজিক্যাল ড্রাইভ নয়, বরং একটি ভার্চুয়াল ফাইল সিস্টেম।
কারণ এনভায়রনমেন্ট ভেরিয়েবলগুলো Env: ড্রাইভে থাকে, আপনাকে ভেরিয়েবল নামের সাথে Env: প্রিপেন্ড করতে হবে যখন আপনি সেগুলো রেফারেন্স করেন। বিকল্পভাবে, আপনি আপনার ওয়ার্কিং লোকেশন Env: ড্রাইভে সেট করতে পারেন Set-Location কমান্ড দিয়ে যাতে আপনি সকল এনভায়রনমেন্ট ভেরিয়েবলকে লোকাল ভেরিয়েবল হিসেবে চিকিৎসা করতে পারেন:
PS> Set-Location Env: PS> pwd Path ---- Env:/
এনভায়রনমেন্ট ভেরিয়েবল আপনার লগইন সেশন সম্পর্কে তথ্য আপনার কম্পিউটারে पहुंचায়। উদাহরণস্বরূপ, যখন একটি অ্যাপ্লিকেশনকে নির্ধারণ করতে হয় ডিফল্টভাবে ডেটা ফাইল কোথায় সংরক্ষণ করবে, এটি সাধারণত HOME এনভায়রনমেন্ট ভেরিয়েবলকে কল করে। আপনি সম্ভবত কখনো HOME ভেরিয়েবল নিজে সেট করেননি, এবং তবুও এটি অস্তিত্বে থাকে কারণ অধিকাংশ এনভায়রনমেন্ট ভেরিয়েবল আপনার অপারেটিং সিস্টেম দ্বারা ম্যানেজড।
আপনি আপনার সিস্টেমে সেট করা সকল এনভায়রনমেন্ট ভেরিয়েবল দেখতে পারেন Get-ChildItem কমান্ড দিয়ে Env: ড্রাইভ থেকে। লিস্টটি লম্বা, তাই আউটপুট out-host -paging দিয়ে পাইপ করুন সহজে পড়ার জন্য:
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
এনভায়রনমেন্ট ভেরিয়েবল সেট, রিকল, এবং ক্লিয়ার করা যায় নরমাল ভেরিয়েবলের মত সিনট্যাক্স দিয়ে। অন্য ভেরিয়েবলের মত, আপনি একটি সেশনে যা সেট করবেন সেটি শুধু সেই নির্দিষ্ট সেশনে প্রযোজ্য।
আপনি যদি একটি ভেরিয়েবলে পারম্যানেন্ট পরিবর্তন করতে চান, তবে আপনাকে সেগুলো উইন্ডোজ রেজিস্ট্রিতে পরিবর্তন করতে হবে উইন্ডোজে, বা একটি শেল কনফিগারেশন ফাইলে (যেমন ~/.bashrc) লিনাক্স বা ম্যাক-এ। আপনি যদি পাওয়ারশেলে ভেরিয়েবল ব্যবহার করার অভ্যাসী নন, তবে আমার পাওয়ারশেল ভেরিয়েবল সম্পর্কি আর্টিকেল পড়ুন আগে চালু করার আগে।
এনভায়রনমেন্ট ভেরিয়েবল কিসের জন্য ব্যবহার হয়?
বিভিন্ন এনভায়রনমেন্ট ভেরিয়েবল আপনার কম্পিউটারের ভিন্ন ভিন্ন সিস্টেম দ্বারা ব্যবহার হয়। আপনার 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
একটি টেস্ট হিসেবে, একটি নতুন সেশন লঞ্চ করুন এবং আপনি যা tạo করলেন সেটি অ্যাক্সেস করুন। কারণ ভেরিয়েবলটি একটি এনভায়রনমেন্ট ভেরিয়েবল, আপনাকে সেটিকে $Env: দিয়ে প্রিপেন্ড করতে হবে:
PS Env:/> pwsh PS c:\> $Env.FOO hello world
আপনি যদিও একটি ভেরিয়েবল চাইল্ড প্রসেসগুলোর জন্য উপলব্ধ করিয়েছেন, এটি এখনো শুধু একটি টেম্পোরারি ভেরিয়েবল। এটি কাজ করে, আপনি ভেরিফাই করতে পারেন যে এটি অস্তিত্বে আছে, আপনি যেকোনো প্রসেস থেকে এটি ব্যবহার করতে পারেন, কিন্তু এটি ধ্বংস হয়ে যায় যখন সেটি তৈরি করা শেলটি বন্ধ হয়।
আপনি কীভাবে আপনার প্রোফাইলে এনভায়রনমেন্ট ভেরিয়েবল সেট করেন?
এনভায়রনমেন্ট ভেরিয়েবলকে সেশনের 파র পেরসিস্ট করতে বাধ্য করতে, আপনাকে আপনার পাওয়ারশেল প্রোফাইলে সেটি যোগ করতে হবে, যেমন আপনার CurrentUser,AllHosts প্রোফাইল, যা অবস্থিত HOME/Documents/Profile.ps1:
PS> Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:FOO = "hello world"'
এই লাইন যোগ থাকলে, যেকোনো পাওয়ারশেল সেশন লঞ্চ হলে FOO এনভায়রনমেন্ট ভেরিয়েবল ইনস্ট্যানশিয়েট হবে এবং এর মান সেট হবে hello world।
এইমাত্রে ছয়টি ডিফল্ট প্রোফাইল আছে যা পাওয়ারশেল সেশন কন্ট্রোল করে, আরও ইনফরমেশনের জন্য মাইক্রোসফট ডেভ ব্লগ রেফার করুন।
আপনি কীভাবে নতুন এনভায়রনমেন্ট ভেরিয়েবল আবিষ্কার করেন?
আপনি ইচ্ছেমত এনভায়রনমেন্ট ভেরিয়েবল তৈরি ও ম্যানিপুলেট করতে পারেন, এবং কিছু অ্যাপ্লিকেশন ঠিক তাই করে। এই সত্য মানে আপনার অনেক এনভায়রনমেন্ট ভেরিয়েবল আপনার অধিকাংশ অ্যাপ্লিকেশন দ্বারা ব্যবহার হয় না, এবং আপনি যদি আপনার নিজস্ব আর্মিটারি ভেরিয়েবল যোগ করেন তবে কিছু যেকোনো কিছুর জন্য ব্যবহার হয় না।
তাই প্রশ্ন হলো: আপনি কীভাবে জানবেন কোন এনভায়রনমেন্ট ভেরিয়েবলগুলি অর্থপূর্ণ? উত্তর থাকে একটি অ্যাপ্লিকেশনের ডকুমেন্টেশনে।
পাইথন, উদাহরণস্বরূপ, ইনস্টলের সময় আপনার Path এনভায়রনমেন্ট ভেরিয়েবলে উপযুক্ত পাইথন পাথ যোগ করার অফার দেয়। [Note: PATH?] আপনি যদি ডিক্লাইন করেন, আপনি আপনি সেটি নিজে সেট করতে পারেন এখন যেহেতু আপনি জানেন এনভায়রনমেন্ট ভেরিয়েবল মডিফাই কীভাবে করতে হয়।
যেকোনো অ্যাপ্লিকেশন আপনি ইনস্টল করলে একই কথা: ইনস্টলার আশা করা হয় আপনার এনভায়রনমেন্টে উপযুক্ত ভেরিয়েবল যোগ করবে, তাই আপনাকে কখনো Env: ম্যানুয়ালি মডিফাই করতে হবে না। আপনি যদি একটি অ্যাপ্লিকেশন ডেভেলপ করেন, তবে আপনার ইনস্টলারও আপনার ব্যবহারকারীদের জন্য একই কাজ করা উচিত।
আদে বনাম অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ ভেরিয়েবল আবিষ্কার করতে, তাদের ইউজার এবং ডেভেলপার ডকুমেন্টেশন রেফার করুন।