কম্পিউটিং এ, একটি ভেরিয়েবল এমন একটি শব্দ যা পরিবর্তন করতে পারে এমন একটি মান বোঝায়। আপনি স্বাভাবিক বক্তৃতায় প্রতিদিন ভেরিয়েবল ব্যবহার করেন, যদিও আপনি সেগুলিকে ভেরিয়েবল বলে মনে করেন না। আপনি যখন "আমার গাড়ি" বলেন, তখন আপনি "আমার গাড়ি" ব্যবহার করছেন এমন একটি পরিবর্তনশীল হিসাবে যা সেই সময়ে আপনি যে গাড়ির মালিক হন তা বোঝায়। আপনি একটি পুরানো গাড়িকে একটি নতুন দিয়ে প্রতিস্থাপন করার সাথে সাথে মেক এবং মডেলটি আপনার জীবনের সময় পরিবর্তিত হবে, কিন্তু "মাই কার" ভেরিয়েবল তৈরি করার মাধ্যমে আপনি বর্তমানে কোন ধরনের গাড়ি করছেন তা নিয়ে আপনাকে ঘোরাঘুরি করতে হবে না। আপনি যখনই আপনার গাড়ির উল্লেখ করতে চান তখনই মালিকানাধীন।
কম্পিউটারে, ভেরিয়েবল একইভাবে ব্যবহার করা হয়।
উদাহরণস্বরূপ, কম্পিউটারে ব্যবহারকারীর অ্যাকাউন্ট সহ যে কোনও ব্যক্তির একটি হোম ডিরেক্টরি থাকে যেখানে কম্পিউটার তাদের ব্যক্তিগত ডেটা রাখে। কিন্তু প্রতিটি ব্যবহারকারীর একটি স্বতন্ত্র হোম ডিরেক্টরি থাকে (/home/seth
সেথের জন্য, /home/tux
Tux এর জন্য, এবং প্রতিটি ব্যবহারকারীর জন্য তাই), তাই যখন আপনি একটি হোম ডিরেক্টরিতে সাধারণভাবে উল্লেখ করতে চান, আপনি পরিবর্তনশীল $HOME
ব্যবহার করতে পারেন। কারেন্ট-এর হোম ডিরেক্টরি নির্দেশ করতে ব্যবহারকারী, ব্যবহারকারীর লগইন নাম নির্বিশেষে।
পরিবেশ ভেরিয়েবল হল বিশেষ ভেরিয়েবল (যেমন $HOME
) যাতে আপনার লগইন সেশন সম্পর্কে তথ্য থাকে। কমান্ড চালানোর সময় সিস্টেম শেল ব্যবহার করার জন্য এগুলি সংরক্ষণ করা হয়। আপনি লিনাক্স, ম্যাক বা উইন্ডোজ ব্যবহার করছেন না কেন তারা বিদ্যমান। এই ভেরিয়েবলগুলির মধ্যে অনেকগুলি ইনস্টলেশন বা ব্যবহারকারী তৈরির সময় ডিফল্টরূপে সেট করা হয়৷
যদিও এনভায়রনমেন্ট ভেরিয়েবলগুলি সমস্ত আধুনিক সিস্টেমে প্রযোজ্য, এই নিবন্ধটি বিশেষভাবে লিনাক্স, বিএসডি, ম্যাক এবং সাইগউইনের ব্যাশ শেলের পরিবেশের ভেরিয়েবলগুলিকে সম্বোধন করে৷
পরিবেশ ভেরিয়েবল বোঝা
এনভায়রনমেন্ট ভেরিয়েবল ভিন্ন নয়, প্রযুক্তিগতভাবে, ভেরিয়েবলের চেয়ে। ভেরিয়েবলের জন্য ব্যবহৃত ঠিক একই সিনট্যাক্স দিয়ে সেগুলি সেট করা, প্রত্যাহার করা এবং পরিষ্কার করা যেতে পারে। আপনি যদি Bash-এ ভেরিয়েবল ব্যবহার করতে অভ্যস্ত না হন, তাহলে চালিয়ে যাওয়ার আগে Bash নিবন্ধে আমার ভেরিয়েবলগুলি পড়ুন৷
আপনি প্রায়শই পরিবেশের ভেরিয়েবলগুলি সরাসরি ব্যবহার করেন না। প্রয়োজন অনুসারে এগুলি পৃথক অ্যাপ্লিকেশন এবং ডেমন দ্বারা উল্লেখ করা হয়েছে। উদাহরণস্বরূপ, যখন আপনি লগ ইন করেন তখন আপনার হোম ডিরেক্টরিটি একটি পরিবেশ পরিবর্তনশীল হিসাবে সেট করা হয়৷ উদাহরণস্বরূপ, লিনাক্সে আপনি আপনার হোম দেখতে পারেন এনভায়রনমেন্ট ভেরিয়েবলের বিষয়বস্তু এই রকম:
$ echo $HOME
HOME=/home/seth
ম্যাকে:
$ echo $HOME
HOME=/ব্যবহারকারী/বোগাস
উইন্ডোজে:
C:\Users\bogus
আপনি env দিয়ে আপনার সিস্টেমে সেট করা সমস্ত পরিবেশ ভেরিয়েবল দেখতে পারেন আদেশ৷ ৷ তালিকাটি দীর্ঘ, তাই আরো এর মাধ্যমে আউটপুট পাইপ করুন এটি পড়া সহজ করতে:
$ env | আরো
TERM=xterm-256color
LESSOPEN=||/usr/bin/lesspipe.sh %s
USER=seth
SUDO_EDITOR=emacs
WWW_HOME=https://mirror.lagoon.nc/pub/slackware/slackware64-current/ChangeLog.txt
VISUAL=emacs
DISPLAY=:0
PS1=$
XDG_DATA_DIRS=/home/ seth/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
PATH=/usr/local/ bin:/usr/local/sbin:/usr/bin:/usr/sbin:/snap/bin:/home/seth/bin:/home/seth/.local/bin:/snap/bin
GDMSESSION =gnome
MAIL=/var/sool/mail/seth
[...]
আপনি যখন ডিফল্ট সেটিংস ওভাররাইড করতে চান, বা যখন আপনার সিস্টেমের নিজের থেকে তৈরি করার কোনো কারণ নেই এমন নতুন সেটিংস পরিচালনা করার প্রয়োজন হলে পরিবেশ ভেরিয়েবলগুলি কার্যকর হতে পারে। উদাহরণস্বরূপ, আপনি যখন একটি কমান্ড টাইপ করেন, তখন আপনার কম্পিউটার কিভাবে খুঁজতে হয় জানে তার একমাত্র কারণ সেই কমান্ডের সাথে সংশ্লিষ্ট অ্যাপ্লিকেশন হল PATH এনভায়রনমেন্ট ভেরিয়েবল বলে যে কোথায় দেখতে হবে। এই ভেরিয়েবলটি আপনার অপারেটিং সিস্টেমের জন্য কমান্ড অনুসন্ধান করার জন্য বৈধ ডিরেক্টরি তালিকাভুক্ত করে, সেই কমান্ডটি ls হোক না কেন বা cp, অথবা ফায়ারফক্স বা লুট্রিস বা অন্য কিছুর মতো গ্রাফিক্যাল অ্যাপ্লিকেশন।
বিভিন্ন পরিবেশের ভেরিয়েবল বিভিন্ন সিস্টেম দ্বারা ব্যবহৃত হয়। আপনার PATH৷ ভেরিয়েবল আপনার টার্মিনাল এমুলেটরের জন্য অত্যাবশ্যক, উদাহরণস্বরূপ, কিন্তু জাভা (যার নিজস্ব পাথ রয়েছে, যা গুরুত্বপূর্ণ জাভা লাইব্রেরির দিকে নির্দেশ করে) এর জন্য অনেক কম তাৎপর্যপূর্ণ। যাইহোক, USER কে একটি পরিষেবার অনুরোধ করছে তা সনাক্ত করার উপায় হিসাবে পরিবর্তনশীলটি বিভিন্ন সিস্টেম দ্বারা ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি যদি একটি মাল্টি-ইউজার সিস্টেমে থাকেন এবং আপনার স্থানীয় মেলবক্স চেক করার প্রয়োজন হয়, আপনার মেল কমান্ড জানে যে MAIL-এর উপর ভিত্তি করে কোন মেল স্পুলটি পুনরুদ্ধার করতে হবে এবং USER ভেরিয়েবল।
একটি পরিবেশ পরিবর্তনশীল সেট করা
সাধারণত, ইনস্টলার প্রোগ্রাম, সেটা dnfই হোক না কেন ফেডোরাতে, উপযুক্ত উবুন্টুতে, ব্রু Mac এ, বা একটি কাস্টম ইনস্টলার, একটি নতুন অ্যাপ্লিকেশনের জন্য আপনার পরিবেশের ভেরিয়েবল আপডেট করে। কখনও কখনও, যদিও, আপনি যখন আপনার ডিস্ট্রিবিউশনের উদ্দেশ্যে করা টুলসেটের বাইরে কিছু ইনস্টল করছেন, তখন আপনাকে নিজেই একটি পরিবেশ পরিবর্তনশীল পরিচালনা করতে হতে পারে। অথবা আপনি আপনার পছন্দ অনুসারে একটি পরিবেশ পরিবর্তনশীল যোগ করতে পারেন। আপনি যদি সিদ্ধান্ত নেন আপনি কিছু অ্যাপ্লিকেশন একটি বিনে রাখতে চান আপনার হোম ডিরেক্টরিতে অবস্থিত ফোল্ডার, তারপর আপনাকে অবশ্যই সেই ডিরেক্টরিটি আপনার PATH-এ যোগ করতে হবে তাই আপনার অপারেটিং সিস্টেম জানে যে আপনি যখন একটি কমান্ড জারি করেন তখন অ্যাপ্লিকেশন চালানোর জন্য সেখানে দেখতে পারেন৷
৷অস্থায়ী পরিবেশের ভেরিয়েবল
আপনি যেভাবে থ্রো-অ্যাওয়ে ভেরিয়েবল তৈরি করেন সেভাবে আপনি আপনার পথে একটি অবস্থান যোগ করতে পারেন। এটি কাজ করে, কিন্তু শুধুমাত্র যতক্ষণ পর্যন্ত আপনি আপনার সিস্টেম পাথ পরিবর্তন করতে ব্যবহৃত শেলটি খোলা থাকে। উদাহরণস্বরূপ, একটি ব্যাশ শেল খুলুন এবং আপনার সিস্টেমের পথ পরিবর্তন করুন:
$ export PATH=$PATH:/home/seth/bin
ফলাফল নিশ্চিত করুন:
$ echo $PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/snap/bin:/home/seth/bin:/ home/seth/.local/bin:/snap/bin:/home/seth/bin
অধিবেশন বন্ধ করুন:
$ প্রস্থান করুন
একটি নতুন খুলুন এবং PATH দেখুন৷ পরিবর্তনশীল:
$ echo $PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/snap/bin:/home/seth/bin:/ home/seth/.local/bin:/snap/bin
এই ভেরিয়েবলটি তার ডিফল্ট অবস্থায় ফিরে এসেছে কারণ PATH প্রতিটি নতুন শেলের সাথে সেট করা হচ্ছে না। এর জন্য, শেল চালু হওয়ার সময় আপনাকে আপনার ভেরিয়েবলগুলিকে লোড করার জন্য কনফিগার করতে হবে।
স্থায়ী পরিবেশ ভেরিয়েবল
আপনি আপনার শেল কনফিগারেশন ফাইলে আপনার নিজস্ব স্থায়ী পরিবেশ ভেরিয়েবল সেট করতে পারেন, যার মধ্যে সবচেয়ে সাধারণ হল ~/.bashrc . আপনি যদি একজন সিস্টেম অ্যাডমিনিস্ট্রেটর হন যারা বেশ কয়েকটি ব্যবহারকারীকে পরিচালনা করেন, আপনি /etc/profile.d-এ রাখা স্ক্রিপ্টে পরিবেশের ভেরিয়েবল সেট করতে পারেন ডিরেক্টরি।
কনফিগারেশন ফাইল দ্বারা একটি ভেরিয়েবল সেট করার জন্য সিনট্যাক্স আপনার শেলে একটি ভেরিয়েবল সেট করার মতই:
PATH=$PATH:/snap/bin:/home/seth/binরপ্তানি করুন
বর্তমান শেলটি বন্ধ করুন, অন্যথায় আপডেট করা কনফিগারেশন লোড করতে বাধ্য করুন:
<পূর্ব>$। ~/.bashrcসবশেষে, আপনার সিস্টেমের পথের দিকে আরেকবার দেখুন:
$ echo $PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/snap/bin:/home/seth/bin:/ home/seth/.local/bin:/snap/bin:/home/seth/bin
এটি এখন আপনার অতিরিক্ত কাস্টম ডিরেক্টরি অন্তর্ভুক্ত করার জন্য সঠিকভাবে সেট করা হয়েছে৷
অন্যান্য পরিবেশের ভেরিয়েবল আবিষ্কার করা
আপনি ইচ্ছামত এনভায়রনমেন্ট ভেরিয়েবল তৈরি এবং ম্যানিপুলেট করতে পারেন এবং কিছু অ্যাপ্লিকেশন ঠিক তাই করে। এই সত্যটির মানে হল যে আপনার অনেকগুলি এনভায়রনমেন্ট ভেরিয়েবল আপনার বেশিরভাগ অ্যাপ্লিকেশন দ্বারা ব্যবহার করা হয় না এবং আপনি যদি নিজের ইচ্ছামত ভেরিয়েবল যোগ করেন তাহলে কিছু কিছুতেই ব্যবহার করা যাবে না। তাই প্রশ্ন হল:কোন পরিবেশের ভেরিয়েবলগুলি অর্থপূর্ণ তা আপনি কীভাবে খুঁজে পাবেন?
উত্তরটি একটি অ্যাপ্লিকেশনের ডকুমেন্টেশনে রয়েছে। উদাহরণস্বরূপ, আপনার সাধারণ ব্যাশ পরিবেশের জন্য আপনার কাছে কোন বিকল্পগুলি উপলব্ধ তা খুঁজে বের করতে, আপনি ব্যাশ ডকুমেন্টেশন পড়তে পারেন। যদিও ব্যাশ ম্যান পৃষ্ঠায় অনেক গুরুত্বপূর্ণ ভেরিয়েবলের উল্লেখ রয়েছে, ব্যাশের জন্য GNU তথ্য পৃষ্ঠায় দরকারী Bourne Shell এবং Bash এনভায়রনমেন্ট ভেরিয়েবলের দুটি সম্পূর্ণ তালিকা এবং প্রতিটি কীভাবে ব্যবহার করা হয় তা রয়েছে৷
উদাহরণস্বরূপ, তথ্য পৃষ্ঠা তালিকায়:
'HISTCONTROL'
একটি কোলন-বিভক্ত মানের তালিকা যা নিয়ন্ত্রণ করে কিভাবে কমান্ড সংরক্ষিত হয়
ইতিহাসের তালিকায়। যদি মানগুলির তালিকায় 'অবজ্ঞানস্থান' অন্তর্ভুক্ত থাকে,
রেখাগুলি যা একটি স্পেস অক্ষর দিয়ে শুরু হয় সেগুলি
ইতিহাস তালিকায় সংরক্ষিত হয় না। 'উপেক্ষা করা'-এর একটি মান রেখার কারণ হয় যা
পূর্ববর্তী ইতিহাস এন্ট্রির সাথে মেলে সেভ করা যাবে না। 'ignoreboth'-এর একটি মান হল
'ignorespace' এবং 'ignoredups'-এর সংক্ষিপ্তহ্যান্ড।
[...]
এই আউটপুট আপনাকে বলে যে HISTCONTROL এনভায়রনমেন্ট ভেরিয়েবল নিয়ন্ত্রণ করে কিভাবে আপনার ব্যাশ ইতিহাস উপস্থাপন করা হয় এবং সেই অভিজ্ঞতা কাস্টমাইজ করতে আপনি কোন মান ব্যবহার করতে পারেন। এই উদাহরণে, উপেক্ষা করুন মান ইতিহাসের আউটপুট বলে ডুপ্লিকেট লাইন উপেক্ষা করার জন্য কমান্ড।
আপনি সহজেই এই এক পরীক্ষা করতে পারেন. প্রথমে, একই কমান্ড পরপর দুবার জারি করুন:
$ echo "hello world"
hello world
$ echo "hello world"
hello world
আপনার ইতিহাস, বা অন্তত সাম্প্রতিক এন্ট্রিগুলি দেখুন:
$ ইতিহাস | tail -5
996 man bash
997 info bash
998 echo "hello world"
999 echo "hello world"
1000 ইতিহাস
আপনি দেখতে পাচ্ছেন যে ডুপ্লিকেট এন্ট্রিগুলি এখন তালিকাভুক্ত করা হয়েছে৷
৷আপনার .bashrc-এ একটি নতুন পরিবেশ পরিবর্তনশীল সেট করুন তথ্য পৃষ্ঠায় আপনি যা পড়েছেন তার উপর ভিত্তি করে ফাইল:
HISTCONTROL=$HISTCONTROL:ignorespace:ignoredups রপ্তানি করুন
সংরক্ষণ করুন এবং তারপর আপনার নতুন কনফিগারেশন লোড করুন:
$ উৎস ~/.bashrc
পরপর দুবার দুটি কমান্ড ইস্যু করুন:
$ echo "হ্যালো একবার"
হ্যালো একবার
$ echo "হ্যালো একবার"
হ্যালো একবার
আপনার ইতিহাসের সাম্প্রতিকতম এন্ট্রিগুলি দেখুন:
$ ইতিহাস | tail -5
1000 ইতিহাস
1001 emacs ~/.bashrc
1002 উৎস ~/.bashrc
1003 ইকো "হ্যালো একবার"
1004 ইতিহাস
আপনার নতুন এনভায়রনমেন্ট ভেরিয়েবলের কারণে ডুপ্লিকেট এন্ট্রিগুলি এখন একটি এন্ট্রিতে সঙ্কুচিত হয়েছে, ঠিক যেমন তথ্য পৃষ্ঠা নির্দিষ্ট করা হয়েছে৷
প্রাসঙ্গিক পরিবেশ ভেরিয়েবল খোঁজা সাধারণত আপনি প্রভাবিত করতে চান অ্যাপ্লিকেশনের জন্য ডকুমেন্টেশন পড়ার বিষয়. বেশিরভাগ এনভায়রনমেন্ট ভেরিয়েবল একটি অ্যাপ্লিকেশনকে সুচারুভাবে চালানোর জন্য যা প্রয়োজন তার জন্য নির্দিষ্ট। সাধারণ এন্ট্রিগুলির জন্য, আপনার শেলের ডকুমেন্টেশনটি দেখার জন্য যৌক্তিক জায়গা। আপনি যদি স্ক্রিপ্ট বা অ্যাপ্লিকেশনগুলি লেখেন যার জন্য নতুন পরিবেশের ভেরিয়েবলের প্রয়োজন হয়, তাহলে আপনার নিজস্ব ডকুমেন্টেশনে সেই ভেরিয়েবলগুলিকে সংজ্ঞায়িত করতে ভুলবেন না৷