Orতিহাসিকভাবে, প্রোফাইল ফাইলগুলি ( /etc/profile
এবং ~/.profile
) যখন আপনি লগইন করা হত (পাঠ্য কনসোলে, অন্য কী?) এবং বহু উদ্দেশ্য পূরণ করেছিলেন:
- সেশনটির জন্য পরিবেশের ভেরিয়েবল এবং অন্যান্য প্যারামিটার (যেমন umask) সেট করুন।
- অধিবেশন শুরুর দিকে অতিরিক্ত প্রোগ্রাম চালান (যেমন ইমেল বিজ্ঞপ্তি)।
- শেল থেকে আলাদা হলে সেশনটির জন্য প্রোগ্রামটি চালান (উদাঃ অন্য শেল বা এক্স উইন্ডো)।
- টার্মিনাল প্যারামিটার সেট করুন (যেমন
stty
)।
- শেল প্যারামিটারগুলি সেট করুন (যেমন এলিয়াস)।
এই সমস্ত উদ্দেশ্য পরবর্তীকালে পৃথক হিসাবে চিহ্নিত করা হয়নি। কারণ প্রোফাইল স্ক্রিপ্টগুলি এমন কিছু করতে পারে যা কেবলমাত্র একটি ইন্টারেক্টিভ সেশনে (টার্মিনাল ইন্টারঅ্যাকশন, অন্যান্য প্রোগ্রাম শুরু করে) বোঝায়, যখন রিমোট শেল ডাকা ( রাশি ) প্রবর্তন করা হয়েছিল, তখন আরশ এর মেক আপগুলি রিমোট শেলটিকে লগইন শেল হিসাবে না ডাকার সিদ্ধান্ত নিয়েছে, যাতে প্রোফাইল স্ক্রিপ্টগুলি কার্যকর করা হয় না। (কয়েকটি সংস্করণে rshd
লগইন শেল হিসাবে দূরবর্তী শেলটি চালানোর বিকল্প রয়েছে।) এসআরএস-এর জন্য ড্রপ-ইন প্রতিস্থাপন হওয়ার জন্য এই আচরণটি অনুলিপি করেছেন S
আপনি যদি নিজের প্রোফাইল স্ক্রিপ্টগুলি সম্পাদন করতে চান তবে আপনি সেগুলি স্পষ্টভাবে প্রার্থনা করতে পারেন।
ssh 127.0.0.1 '. /etc/profile; . ~/.profile; ydisplay'
.
শেলের ভিতরে প্রোফাইল স্ক্রিপ্টগুলি লোড করার কমান্ডটি নোট করুন : এগুলি শেলটির অভ্যন্তরে কার্যকর করার জন্য আদেশ রয়েছে, বাহ্যিক প্রোগ্রাম নয়।
আপনি যদি সমস্ত ব্যবহারকারীর জন্য বিশ্বব্যাপী একটি পরিবেশের পরিবর্তনশীল সেট করতে চান তবে অনেক সিস্টেমে অন্য পদ্ধতি রয়েছে: এটির সংজ্ঞা দেওয়ার পরিবর্তে এটি /etc/profile
সংজ্ঞায়িত করুন /etc/environment
। এই ফাইলটি pam_env
মডিউলটির মাধ্যমে পড়ে ; এটি পড়ার জন্য বেশিরভাগ লিনাক্স বিতরণ সেট আপ করা হয়।
আপনার লগইন শেল যদি বাশ হয় তবে আরও সম্ভাবনা রয়েছে। সাধারণত, আপনার ক্ষেত্রে পরিবেশের ভেরিয়েবলগুলি সেট করা উচিত নয়.bashrc
(কারণ এটি এক্স সেশনে সেট করা হবে না যদি আপনি ইন্টারেক্টিভ শেলটি দিয়ে টার্মিনাল দিয়ে যান তবে সেগুলি সেট করা হবে না যদি আপনি কোনও পাঠ্য কনসোল বা ইন্টারঅ্যাক্টে ইন্টারেক্টিভ লগইন করেন তবে সেগুলি সেট করা হবে না) ssh, কারণ আপনি যদি অন্য কোনও প্রোগ্রামের মধ্যে শেলটি আহ্বান করেন তবে তারা কাস্টম সেটিংস ওভাররাইড করবে)। তবে, বাশের একটি অদ্ভুত বৈশিষ্ট্য রয়েছে যা আমি কখনই বুঝতে পারি নি: এটি ~/.bashrc
দুটি সম্পর্কহীন পরিস্থিতিতে পড়ে:
- ইন্টারেক্টিভ শেলগুলিতে যা লগইন শেল নয়;
- অ-ইন্টারেক্টিভ শেলগুলিতে যেগুলি লগইন শেল নয়, যদি বাশ মনে করে যে এটি দ্বারা চালিত হয়েছে
rshd
বা sshd
।
আপনি যখন ssh ওভার কমান্ড চালান, আপনি দ্বিতীয় ক্ষেত্রে হন। আপনি পড়া দ্বারা আপনার প্রোফাইল পড়েছেন তা সাজাতে পারেন /etc/profile
এবং .profile
থেকে .bashrc
। আপনার মধ্যে নিম্নলিখিত কোড অন্তর্ভুক্ত করুন ~/.bashrc
:
case $- in
*i*) :;; # this is an interactive shell, fine
*) # This is not an interactive shell! This must be a non-interactive remote shell session.
. /etc/profile; . ~/.profile
return;;
esac
ydisplay
কাজ চলছে ? নাssh 127.0.0.1 /usr/app/cpn/bin/ydisplay
কাজ করে?