.bashrcbash yapılandırma dosyasıdır, ancak etkileşimli olarak çalıştırıldığında. Sadece bash başlattığınızda yüklenir, başka bir programı çalıştırdığınızda shdeğil (bash adı aracılığıyla çağrılsa bile sh). Ve sadece bash etkileşimli olduğunda yüklenir, bir betik veya komut ile çalıştırıldığında değil -c.
sudo sh -c 'echo $PATH'veya sudo bash -c 'echo $PATH'etkileşimli bir kabuk çağırmaz, bu yüzden .bashrcdahil değildir.
sudo su; echo $PATHkök kabuğunun etkileşimli bir örneğini çalıştırır. Eğer bu bash ~root/.bashrcise, yüklenir. Bu kod parçası, echo $PATHbu etkileşimli kabuk sona erdiğinde yürütülür, bu nedenle etkileşimli kabukta ne olursa olsun, parçacığın sonunda ne yazdırdığını etkilemez. Ancak , echo $PATHbaşlatılan etkileşimli kabuğun istemine sudo suyazarsanız, tarafından ayarlanan değeri görürsünüz ~root/.bashrc.
Yana .bashrc(hatta bash bir tasarım kusur olduğunu etkileşimli giriş kabukları ile) değil giriş kabukları ile her etkileşimli kabukta çağrılır, bu ortam değişkenleri tanımlamak yanlış yerdir. .bashrcTuş ciltleri, takma adlar ve tamamlama ayarları gibi etkileşimli bash ayarları için kullanın . Ortam değişkenlerini, oturum açtığınızda yüklenen dosyalarda ayarlayın: ~/.pam_environmentveya ~/.profile.
Yani set PATHiçinde .profileyerine .bashrcve ya bir giriş ile kabuğu çalıştırmak sudo -i 'echo $PATH'veya açıkça kaynağı .profileile sudo sh -c '. ~/.profile; echo $PATH'.