.bashrcবাশের একটি কনফিগারেশন ফাইল, কেবলমাত্র এটি ইন্টারেক্টিভভাবে কার্যকর করা হয়। এটি কেবল তখনই লোড হয় যখন আপনি বাশ শুরু করেন, আপনি যখন অন্য কোনও প্রোগ্রাম চালানোর সময় shনয় ( যেমন নামের মাধ্যমে বাশকে ডাকেও না sh)। এবং এটি কেবল তখনই লোড হয় যখন বাশ ইন্টারেক্টিভ হয়, যখন এটি কোনও স্ক্রিপ্ট বা কমান্ড ব্যবহার করে না -c।
sudo sh -c 'echo $PATH'বা sudo bash -c 'echo $PATH'একটি ইন্টারেক্টিভ শেল প্রার্থনা করে না, তাই .bashrcজড়িত নয়।
sudo su; echo $PATHরুটের শেলের একটি ইন্টারেক্টিভ উদাহরণ চালায়। যদি এটি বাশ, তবে ~root/.bashrcবোঝা হয়। এই স্নিপেটটি echo $PATHএকবার এই ইন্টারেক্টিভ শেলটি শেষ হয়ে গেলে কার্যকর করে , তাই ইন্টারেক্টিভ শেলের মধ্যে যা ঘটে তা শেষ পর্যন্ত স্নিপেট প্রিন্ট করে তার কোনও প্রভাব রাখে না। তবে আপনি যদি echo $PATHইন্টারেক্টিভ শেলের প্রম্পটে প্রারম্ভ করে টাইপ করেন তবে আপনি sudo suসেট করা মানটি দেখতে পাবেন ~root/.bashrc।
যেহেতু .bashrcপ্রতিটি ইন্টারেক্টিভ শেলের সাথে যুক্ত হয়, লগইন শেল দ্বারা নয় (এমনকি ইন্টারেক্টিভ লগইন শেল দ্বারাও নয়, যা বাশের মধ্যে নকশার ত্রুটিযুক্ত) তাই পরিবেশের ভেরিয়েবলগুলি সংজ্ঞায়নের জন্য এটি ভুল জায়গা। ব্যবহার করুন .bashrcযেমন কি-বাইন্ডিং, alias লেখা এবং সমাপ্তির সেটিংস ইন্টারেক্টিভ ব্যাশ সেটিংসের জন্য। আপনি লগ ইন করার সময় লোড হওয়া ফাইলগুলিতে পরিবেশের ভেরিয়েবলগুলি সেট করুন: ~/.pam_environmentবা ~/.profile।
সুতরাং সেট PATHমধ্যে .profileপরিবর্তে .bashrc, এবং হয় সাথে একটি লগ-ইন শেল চালানোর sudo -i 'echo $PATH', অথবা স্পষ্টভাবে উৎস .profileসঙ্গে sudo sh -c '. ~/.profile; echo $PATH'।