Neden .profile (.bashrc değil) yola ~ / bin ekler?


9

Yana .bashrc(bu anlamda daha "genel" olduğunu .profilekaynaklar o), neden "include ~/binyoluna" prosedürü içinde değil .bashrc? Kullanıcı neden giriş yapmayan bir kabukta istemiyor? (Özellikle günümüzde, giriş yapmayan mermilerin daha yaygın olduğu *.)

El ile böyle bir değişiklik yapabileceğimi biliyorum, ama bir sebebi olup olmadığını bilmek istiyorum.

* kanıtlayamıyor, ama bence durum böyle.

Yanıtlar:


13

~/.bashrcve /etc/bash.bashrcetkileşimli bir bashkabuk her başlatıldığında çalıştırılır.

Buna karşılık, ~/.profileve /etc/profileherhangi her zaman çalıştırılır giriş kabuğu başlatılır. Bu yüzden bir bashkabuk olmak zorunda değildir , ancak bir giriş kabuğu olmak zorundadır (ve birçok bashkabuk örneği giriş kabukları değildir ).

  • Bir bashkabuk da içerir kabuk programı bir kabuk bashgibi, yerine başka bir program daha dash.
  • Oturum açma kabuğu, oturum açma için kullanıcı arabirimi (grafik veya komut satırı) sağlamak üzere oturum açmanın bir sonucu olarak otomatik olarak başlatılan bir kabuktur. Bir oturum açma kabuğundan çıkıldığında, oturum sonlandırılır.

Bu nedenle, PATHbir bashrcdosyaya giriş ekleyen bir övgü koymak :

  1. Kabuk olmadığında hiçbir şey yapmayınbash , bu genellikle durumdur. Örneğin, PATHbir grafik giriş oturumunda olduğunuzda değiştirilmez. Unutmayın, PATHsadece komut satırı programları tarafından kullanılmaz.

  2. Yuvalanmış bashkabukların varlığında tekrar tekrar ekleyin . Bu nedenle, bir kabuk içinde bir kabuğu başlatırsanız - ki bu çok yaygındır, çeşitli nedenlerden dolayı - o zaman ~/binyığına yığılmış birden fazla girişiniz olacaktır PATH. Bu PATHortam değişkenini okumayı zorlaştırır ve bazen performansı düşürür.

Bunlar istenmeyen bir durumdur. Dolayısıyla bunu bir dosyaya koymak yanlış olur bashrc; gerçekten ait ~/.profile. ~/.profileşunun için doğru yer :

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Giriş yapmayan kabuklar, ebeveynleri olarak giriş kabuklarına (veya giriş kabuğu gibi davranan bir şeye) sahiptir ve PATHbu giriş kabuğundan ortam değişkenlerinin çoğunu devralır . Bu nedenle, yolu değiştiren komutların devreye sokulması ~/.profile, etkili olmaları için oturumu kapatıp tekrar açmanızı gerektirir, ancak giriş yapmayan kabukların ortamını da etkiler (ayrıca kabuk olmayan programların ortamını da etkiler, çünkü her program kendi "ortam" olarak adlandırılan kendi ortam değişkenleri kümesi, ana sürecinden miras alınır).


Anlıyorum. Ancak bu karar benim için hala anlamlı değil. Açık bir terminal şu ​​anda sadece .bashrc yüklerse, o zaman özel binimi göremeyeceğim.
borges

@borges Varsayılan yapılandırma sizin için iyi çalışmazsa, değiştirmekten çekinmeyin. (Sonuçta sizin bilgisayarınız, ya da en azından hesabınız.) Ama bu bir kereye mahsus bir şey gibi geliyor. Yani, binoturum açtığınızda özel dizininiz yokmuş gibi geliyor ve bu giriş oturumu sırasında oluşturdunuz. Oturumu kapatıp tekrar açarsanız, cihazınızda olacaktır PATH. Özel bindizininizi oluşturmak yalnızca bir kez yapılması gereken bir şey olduğundan, bu bir defalık bir rahatsızlıktır.
Eliah Kagan

3

Çünkü geleneksel olarak çevre değişkenleri sadece /etc/profileveya içine girer .profile. bashrcDosya benzeri diğer adları, istemi ayarlarına, kabuk seçenekleri ve benzeri şeylere (kabuk doğrudan ilişkili yani şeylerin) içindir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.