লিনাক্স একটি মাল্টি-ইউজার, টাইম শেয়ারিং সিস্টেম, যার মানে একাধিক ব্যবহারকারী লগইন করে একটি সিস্টেম ব্যবহার করতে পারে। এবং সিস্টেম অ্যাডমিনিস্ট্রেটরদের দায়িত্ব থাকে বিভিন্ন দিক থেকে পরিচালনা করা কিভাবে ভিন্ন ব্যবহারকারীরা একটি সিস্টেম অপারেট করতে পারে সফটওয়্যার ইনস্টল/আপডেট/রিমুভ, প্রোগ্রাম যেগুলো তারা রান করতে পারে, ফাইল যেগুলো তারা ভিউ/এডিট করতে পারে এবং আরও অনেক কিছু।
লিনাক্স ব্যবহারকারীদের এনভায়রনমেন্ট তৈরি বা মেইনটেইন করার দুটি প্রধান পথে অনুমতি দেয়: সিস্টেম-ওয়াইড (গ্লোবাল) এবং ইউজার-স্পেসিফিক (পারসোনাল) কনফিগারেশন ব্যবহার করে। সাধারণত, লিনাক্স সিস্টেমের সাথে কাজ করার বেসিক পদ্ধতি হল শেল, এবং শেল নির্দিষ্ট ফাইলগুলো পড়ে এর ইনিশিয়ালাইজেশন পর একটি ব্যবহারকারী সফলভাবে লগইন করার পর একটি এনভায়রনমেন্ট তৈরি করে।
সাজেস্টেড রিড: লিনাক্সে এনভায়রনমেন্ট ভেরিয়েবল সেট করা
এই আর্টিকেলে, আমরা লোকাল ইউজার ম্যানেজমেন্টের জন্য লিনাক্সে ইউজার প্রোফাইল সম্পর্কে শেল ইনিশিয়ালাইজেশন ফাইল ব্যাখ্যা করব। আমরা আপনাকে জানাব কাস্টম শেল ফাংশন, এলিয়াস, ভেরিয়েবলস সেই সাথে স্টার্টআপ প্রোগ্রাম কোথায় রাখতে হয়।
গুরুত্বপূর্ণ: এই আর্টিকেলের উদ্দেশ্যে, আমরা bash-এ ফোকাস করব, একটি sh-কম্প্যাটিবল শেল যা লিনাক্স সিস্টেমে সবচেয়ে জনপ্রিয়/ব্যবহৃত শেল।
আপনি যদি অন্য শেল (zsh, ash, fish ইত্যাদি) প্রোগ্রাম ব্যবহার করেন, তবে এখানে আমরা যে সম্পর্কিত ফাইলগুলো নিয়ে কথা বলব তার জন্য তার ডকুমেন্টেশন পড়ে জানুন।
লিনাক্সে শেল ইনিশিয়ালাইজেশন
যখন শেল আহ্বান করা হয়, তখন কিছু ইনিশিয়ালাইজেশন/স্টার্টআপ ফাইল এটি পড়ে যা শেল নিজের জন্য এবং সিস্টেম ব্যবহারকারীর জন্য একটি এনভায়রনমেন্ট সেটআপ করতে সাহায্য করে; অর্থাৎ প্রিডিফাইনড (এবং কাস্টমাইজড) ফাংশন, ভেরিয়েবল, এলিয়াস এবং আরও অনেক কিছু।
শেল tarafından পঠিত ইনিশিয়ালাইজেশন ফাইল দুটি ক্যাটাগরিতে বিভক্ত:
- সিস্টেম-ওয়াইড স্টার্টআপ ফাইল – এগুলো সমস্ত সিস্টেম ব্যবহারকারীদের জন্য প্রযোজ্য গ্লোবাল কনফিগারেশন ধারণ করে, এবং সাধারণত /etc ডিরেক্টরিতে অবস্থিত। এগুলো অন্তর্ভুক্ত: /etc/profiles এবং /etc/bashrc বা /etc/bash.bashrc।
- ইউজার-স্পেসিফিক স্টার্টআপ ফাইল – এগুলো সিস্টেমের একটি একক ব্যবহারকারীর জন্য প্রযোজ্য কনফিগারেশন সংরক্ষণ করে এবং সাধারণত ব্যবহারকারীর হোম ডিরেক্টরিতে ডট ফাইল হিসেবে অবস্থিত। এগুলো সিস্টেম-ওয়াইড কনফিগারেশন ওভাররাইড করতে পারে। এগুলো অন্তর্ভুক্ত: .profiles, .bash_profile, .bashrc এবং .bash_login।
আবার, শেল তিনটি সম্ভাব্য মোডে আহ্বান করা যেতে পারে:
১. ইন্টারएक্টিভ লগইন শেল
শেল আহ্বান করা হয় একটি ব্যবহারকারী সিস্টেমে সফলভাবে লগইন করার পর, /bin/login ব্যবহার করে, /etc/passwd ফাইলে সংরক্ষিত ক্রেডেনশিয়াল পড়ে।
যখন শেল একটি ইন্টারएक্টিভ লগইন শেল হিসেবে শুরু হয়, এটি /etc/profile এবং এর ইউজার-স্পেসিফিক সমতুল্য ~/.bash_profile পড়ে।
২. ইন্টারएक্টিভ নন-লগইন শেল
শেল কমান্ড-লাইন থেকে একটি শেল প্রোগ্রাম ব্যবহার করে শুরু করা হয় উদাহরণস্বরূপ $/bin/bash বা $/bin/zsh। এটি /bin/su কমান্ড চালানোর মাধ্যমেও শুরু হতে পারে।
অতিরিক্তভাবে, একটি ইন্টারएक্টিভ নন-লগইন শেল একটি টার্মিনাল প্রোগ্রাম যেমন konsole, terminator বা xterm দিয়ে গ্রাফিক্যাল এনভায়রনমেন্টের ভিতর থেকে আহ্বান করা যেতে পারে।
যখন শেল এই স্টেটে শুরু হয়, এটি প্যারেন্ট শেলের এনভায়রনমেন্ট কপি করে, এবং অতিরিক্ত স্টার্টআপ কনফিগারেশন ইনস্ট্রাকশনের জন্য ইউজার-স্পেসিফিক ~/.bashrc ফাইল পড়ে।
$ su # ls -la
৩. নন-ইন্টারएक্টিভ শেল
শেল আহ্বান করা হয় যখন একটি শেল স্ক্রিপ্ট চলছে। এই মোডে, এটি একটি স্ক্রিপ্ট (শেল বা জেনেরিক সিস্টেম কমান্ড/ফাংশনের সেট) প্রসেস করছে এবং কমান্ডের মধ্যে ব্যবহারকারী ইনপুটের দরকার নেই যদি অন্যথা না হয়। এটি প্যারেন্ট শেল থেকে উত্তরাধিকারসূত্রে প্রাপ্ত এনভায়রনমেন্ট ব্যবহার করে অপারেট করে।
সিস্টেম-ওয়াইড শেল স্টার্টআপ ফাইল বোঝা
এই সেকশনে, আমরা সিস্টেমের সমস্ত ব্যবহারকারীদের জন্য কনফিগারেশন সংরক্ষণকারী শেল স্টার্টআপ ফাইলগুলোর উপর আরও আলোকপাত করব এবং এগুলো অন্তর্ভুক্ত:
/etc/profile ফাইল – এটি সিস্টেম-ওয়াইড এনভায়রনমেন্ট কনফিগারেশন এবং লগইন সেটআপের জন্য স্টার্টআপ প্রোগ্রাম সংরক্ষণ করে। সকল কনফিগারেশন যা আপনি সকল সিস্টেম ব্যবহারকারীদের এনভায়রনমেন্টে প্রয়োগ করতে চান সেগুলো এই ফাইলে যোগ করা উচিত।
উদাহরণস্বরূপ, আপনি এখানে গ্লোবাল PATH এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।
# cat /etc/profile
নোট: কিছু সিস্টেম যেমন RHEL/CentOS 7-এ, আপনি এমন সতর্কতা পাবেন “It’s not recommended to change this file unless you know what you are doing. It’s much better to create a custom .sh shell script in /etc/profile.d/ to make custom changes to your environment, as this will prevent the need for merging in future updates”।
/etc/profile.d/ ডিরেক্টরি – আপনার এনভায়রনমেন্টে কাস্টম পরিবর্তন করার জন্য শেল স্ক্রিপ্ট সংরক্ষণ করে:
# cd /etc/profile.d/ # ls -l
/etc/bashrc বা /etc/bash.bashrc ফাইল – সিস্টেম-ওয়াইড ফাংশন এবং এলিয়াস সহ অন্যান্য কনফিগারেশন ধারণ করে যা সকল সিস্টেম ব্যবহারকারীদের জন্য প্রযোজ্য।
যদি আপনার সিস্টেমে একাধিক ধরনের শেল থাকে, তবে বাশ-স্পেসিফিক কনফিগারেশন এই ফাইলে রাখা একটি ভালো আইডিয়া।
# cat /etc/bashrc
ইউজার-স্পেসিফিক শেল স্টার্টআপ ফাইল বোঝা
এরপর, আমরা ইউজার-স্পেসিফিক শেল (বাশ) স্টার্টআপ ডট ফাইলগুলোর विषयে আরও ব্যাখ্যা করব, যা সিস্টেমের একটি নির্দিষ্ট ব্যবহারকারীর জন্য কনফিগারেশন সংরক্ষণ করে, তারা ব্যবহারকারীর হোম ডিরেক্টরিতে অবস্থিত এবং এগুলো অন্তর্ভুক্ত:
# ls -la
~/.bash_profile ফাইল – এটি ব্যবহারকারী নির্দিষ্ট এনভায়রনমেন্ট এবং স্টার্টআপ প্রোগ্রাম কনফিগারেশন সংরক্ষণ করে। আপনি এখানে আপনার কাস্টম PATH এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন, নিচের স্ক্রিনশটে দেখানো আছে:
# cat ~/.bash_profile
~/.bashrc ফাইল – এই ফাইল ব্যবহারকারী নির্দিষ্ট এলিয়াস এবং ফাংশন সংরক্ষণ করে।
# cat ~/.bashrc
~/.bash_login ফাইল – এতে নির্দিষ্ট কনফিগারেশন থাকে যা সাধারণত শুধু সিস্টেমে লগইন করার সময় এক্সিকিউট হয়। যখন ~/.bash_profile অনুপস্থিত থাকে, তখন এই ফাইলটি বাশ দ্বারা পড়ে।
~/.profile ফাইল – এই ফাইলটি ~/.bash_profile এবং ~/.bash_login-এর অনুপস্থিতিতে পড়ে; এটি একই কনফিগারেশন সংরক্ষণ করতে পারে, যা সিস্টেমের অন্যান্য শেলদ্বারাও অ্যাক্সেসযোগ্য। যেহেতু আমরা এখানে মূলত বাশ নিয়ে কথা বলেছি, মনে রাখবেন যে অন্যান্য শেল বাশ সিনট্যাক্স বুঝতে পারে না।
এরপর, আমরা আরও দুটি গুরুত্বপূর্ণ ইউজার-স্পেসিফিক ফাইল ব্যাখ্যা করব যেগুলো অবশ্যই বাশ ইনিশিয়ালাইজেশন ফাইল নয়:
~/.bash_history ফাইল – বাশ একটি ব্যবহারকারীর দ্বারা সিস্টেমে এন্টার করা কমান্ডের ইতিহাস সংরক্ষণ করে। কমান্ডের এই তালিকা ব্যবহারকারীর হোম ডিরেক্টরিতে ~/.bash_history ফাইলে রাখা হয়।
এই তালিকা দেখতে টাইপ করুন:
$ history or $ history | less
~/.bash_logout ফাইল – এটি শেল স্টার্টআপের জন্য ব্যবহৃত হয় না, কিন্তু লগআউট প্রোসিডিউর জন্য ব্যবহারকারী নির্দিষ্ট ইনস্ট্রাকশন সংরক্ষণ করে। এটি একটি ব্যবহারকারী ইন্টারएक্টিভ লগইন শেল থেকে এক্সিট করার সময় পড়ে এবং এক্সিকিউট হয়।
একটি প্র্যাকটিক্যাল উদাহরণ হবে লগআউট করার সময় টার্মিনাল উইন্ডো ক্লিয়ার করা। এটি রিমোট কানেকশনের জন্য গুরুত্বপূর্ণ, যা ক্লোজ করার পর একটি ক্লিন উইন্ডো রেখে যায়:
# cat bash_logout
অতিরিক্ত অন্তর্দৃষ্টির জন্য, ভিন্ন লিনাক্স ডিস্ট্রোর এই শেল ইনিশিয়ালাইজেশন ফাইলগুলোর কন্টেন্ট চেক করুন এবং বাশ ম্যান পেজ পড়ুন:
এই পর্যন্ত! এই আর্টিকেলে, আমরা লিনাক্সে শেল স্টার্টআপ/ইনিশিয়ালাইজেশন ফাইল ব্যাখ্যা করেছি। আমাদের কাছে ফিরে আসতে নিচের কমেন্ট ফর্ম ব্যবহার করুন।