এনভায়রনমেন্টের ভিতরে দেখা

Last updated 6 months ago

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

ভেরিয়েবল দেখতে আমরা bash এর সাথে বিল্টইন set কমান্ডটি ব্যবহার করতে পারি। যেটি একটু দুর্বোধ্যভাবে সব শেল ভেরিয়েবল ও এনভায়রনমেন্ট ভেরিয়েবল সবই দেখাবে। যেহেতু সেটা অনেক লম্বা ও ক্লান্তিকর তাই খুব দরকার না হলে তা ব্যবহার করা হয় না। আমাদের সাধারন কাজকর্ম শুধু শেল ভেরিয়েবল ঘিরেই আবর্তিত হয়। তাই আমরা শুধু সেটা দেখার জন্য printenv কমান্ডটি ব্যবহার করবো। যেহেতু এই লিস্টটাও কম লম্বা না, নিরীক্ষণের সুবিধার জন্য এর আউটপুটকে পাইপের মাধ্যমে less কমান্ডের সাথে দেখবো:

me@howtocode-pc:~$ printenv | less

ফলাফলে less এর মাধ্যমে এমন একটা স্ক্রলেবল ডকুমেন্ট হিসেবে দেখাবে:

XDG_VTNR=7
LC_PAPER=en_US.UTF-8
SSH_AGENT_PID=2794
LC_ADDRESS=en_US.UTF-8
XDG_SESSION_ID=c2
SELINUX_INIT=YES
LC_MONETARY=en_US.UTF-8
CLUTTER_IM_MODULE=xim
SESSION=gnome
GIO_LAUNCHED_DESKTOP_FILE_PID=3118
TERM=xterm
VTE_VERSION=3409
XDG_MENU_PREFIX=gnome-
SHELL=/bin/bash
SSH_AGENT_LAUNCHER=upstart
LC_NUMERIC=en_US.UTF-8
UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1001/2711
GNOME_KEYRING_CONTROL=/run/user/1001/keyring-ZCsGoa
USER=me
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:
:

এখানে আমরা প্রত্যেক ভেরিয়েবলের নাম ও তার মান জানতে পারছি। যেমন USER নামের ভেরিয়েবলের মান 'me'। আমরা শুধু নির্দিষ্ট ভেরিয়েবলের মানও বের করতে পারি:

me@howtocode-pc:~$ printenv USER
me
me@howtocode-pc:~$ echo $USER
me

এখানে আমরা দুটো পদ্ধতি দেখলাম। প্রথমে printenv এর আর্গুমেন্ট হিসেবে ভেরিয়েবলের নাম দিয়েছি। পরের পদ্ধতিতে echo** ব্যবহার করেছি। এবং আর্গুমেন্ট হিসেবে $USER দিয়েছি। সাধারনত কোথাও ভেরিয়েবলের মান ব্যবহার করতে হলে তার নামের আগে '$' চিহ্নসহ ব্যবহার করতে হয়।

এবার কিছু ভেরিয়েবল সম্পর্কে জানা যাক:

ভেরিয়েবল

অর্থ

DISPLAY

আপনি যে ডিসপ্লেতে কাজ করছেন। সাধারনত আমাদের একটাই ডিসপ্লে থাকে। তাই এর নম্বর হয় ":0"।

EDITOR

ডিফল্ট টেক্সট এডিটর।

SHELL

ডিফল্ট শেল প্রোগ্রাম।

HOME

আপনার হোম ডিরেক্টরি।

LANG

ডিফল্ট ভাষা সংক্রান্ত তথ্য।

OLD_PWD

এখন যে ডিরেক্টরিতে আছেন তার আগে যে ডিরেক্টরিতে ছিলেন।

PAGER

পেজার। অর্থাৎ ফাইল পড়তে ব্যবহৃত প্রোগ্রাম। সাধারনত এটা হয় less।

PATH

এক্সিকিউটেবল ফাইলের ডিফল্ট ডিরেক্টরিগুলো এখানে কোলোন দিয়ে আলাদা করে দেয়া থাকে। এর সুবিধা হল এইসব ডিরেক্টরির প্রোগ্রামগুলো ব্যবহার করতে প্রোগ্রামের পুরো পাথনেম ব্যবহার না করে শুধু নাম ব্যবহার করলেই হয়।

PS1

প্রম্পট স্ট্রিং ১। আপনার শেল প্রম্পটে কী কী দেখাবে তার এর উপর নির্ভর করে। আমরা পরবর্তীতে এটাকে মোডিফাই করে দেখবো।

PWD

কারেন্ট ওয়ার্কিং ডিরেক্টরি বা বর্তমানে যে ডিরেক্টরিতে আছেন।

TERM

আপনার টার্মিনাল প্রোটোকলের নাম।

TZ

টাইমজোন।

USER

আপনার ইউজারনেম।