.bashrc
bash 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 sh
değ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 .bashrc
dahil değildir.
sudo su; echo $PATH
kök kabuğunun etkileşimli bir örneğini çalıştırır. Eğer bu bash ~root/.bashrc
ise, yüklenir. Bu kod parçası, echo $PATH
bu 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 $PATH
başlatılan etkileşimli kabuğun istemine sudo su
yazarsanı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. .bashrc
Tuş 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_environment
veya ~/.profile
.
Yani set PATH
içinde .profile
yerine .bashrc
ve ya bir giriş ile kabuğu çalıştırmak sudo -i 'echo $PATH'
veya açıkça kaynağı .profile
ile sudo sh -c '. ~/.profile; echo $PATH'
.