bash.bashrc ve / etc / environment dosyası arasındaki fark


42

Bugüne kadar bash.bashrcdosyadaki ortam değişkenlerimi ayarlamak için kullandım . Geçenlerde /etc/environmentdosyayı kullanmam söylendi . İkisi de iyi çalışıyor.

Peki, aralarındaki fark nedir?

Bu googled ve "bashrc belirli kullanıcı ve çevre için sistem genelinde kullanılır" bulundu. Burada sistem genelinde kastedilen nedir? /etc/bash.bashrcAyrıca sistem değişiklikleri de uyguluyor sanırım. Eğer Yanlışsam beni düzelt. Her türlü yardım takdir edilecektir.

Yanıtlar:


35

Bir fark, /etc/environmentsadece değişken tanımları içeren ve herhangi bir değişken genişleme / enterpolasyondan geçmediği görülüyor. Bu nedenle tanımlardaki değişkenlere referans veremezsiniz. Örneğin bu işe yaramaz:

A="else"
B="something $A"

B tam anlamıyla something $Abeklenen değil olacaktır something else.

Bu soruya bakınız .

Bu arada, Google’da bulduğun cevap ~/.bashrc, sistem genelinden ziyade bir kullanıcıya atıfta bulunuyor gibi görünüyor /etc/bash.bashrc. Bu karışıklığa neden olabilir.


/ etc / environment ve /etc/bash.bashrc adlı aynı şeyi yapan iki dosya olduğunda ~ / .bashrc amacı nedir?
trapaank

6
Herhangi bir kullanıcı bir bash açarsa /etc/bash.bashrc çalıştırılır. ~ / .Bashrc yalnızca kaydedildiği giriş dizininin sahibinin bir bash açması durumunda çalıştırılır.
André Stannek,

18

/etc/environmentDosya açılışta her kullanıcı için geniş değişken sistemini ayarlar. Kabuk herhangi bir kullanıcı tarafından açılırsa /etc/bash.bashrc, içindeki komutlar uygulanır bash. Dolayısıyla, bir bashkabuk en az bir defa açılmadıkça değişkenler ayarlanmayacaktır .


Üzgünüm ben linux acemi. bash kabuğu açılacak mı? bash kabuğu açıldığında ve / etc / enviornment 'de ayarlanan değişkeni geçersiz kılacak mı?
trapaank

/ Etc / ortamının tam olarak yürütüldüğünden emin değilim, ancak /etc/bash.bashrc, masaüstü ortamınıza girdiğinizde Ubuntu tarafından yürütülür. Bu yüzden değişkenleri orada ayarlarsanız işe yarar. Tahminim, masaüstüne girmeden önce önyükleme yaparken / etc / ortamının bir kez yürütüldüğü ve /etc/bash.bashrc dosyasının çalıştırılmasının değişkenlerin üzerine yazdığıdır. Ama bir kez daha: Bundan emin değilim.
André Stannek,

4
Giriş yapıldı, önyükleme değil!
slm

6

Ve " geniş sistem " hakkında sorduğunuz gibi :

Dizinde bulunan yapılandırma dosyaları /etc, sistemdeki tüm kullanıcılar için geçerlidir. Çünkü /etc/bash.bashrcbu, makinede "Borne Again Shell" aka Bash'i kullanan her şey ve her şey için geçerli olacak. Kullanan tek insan siz olsanız bile, etkilenen "teknik kullanıcılar" olabilir (orada bir göz atın /etc/passwdve "/ bin / bash" teriminin ne sıklıkta belirtildiğini kontrol edin - ya da kullanmanız grep bash /etc/passwd | wc -lgerekir; bu sayı doğrudan (":" / "/ etc / passwd" dosyasındaki "bash" dizesini içeren tüm satırları yakala "ve satırları saymak için sonuçları (" | ")" wc "(kelime sayımı) komutuna gönder ( "-l").

Bu nedenle, kullanıcılarınız için ~/.bashrcbunun yerine değişiklik yapmak daha güvenlidir (örneğin ".bashrc" dosyasının anlamı - ana nokta, evet - ana dizininizde /home/ankur/.bashrc), bu yalnızca kullanıcıyı etkiler ve her şeyi yalnız bırakır . Dosyadaki dosyalar /etcyalnızca sistem genelindeki değişiklikler gerçekten amaçlanıyorsa değiştirilmelidir.

Ayrıca: Varsa her iki yapılandırma da kullanılacaktır. İlk olarak, sistem genelindeki dosya (burada /etc/bash.bashrc:) okunur ve "kaynaklanır" (geçerli oturuma uygulanan ayarlar) ve ardından kullanıcılar /home/username/.bashrcaynı şekilde ele alınır ve böylece genel ayarlara ayarları değiştirebilir / hatta üzerine yazabilir /etc/bash.bashrcdosya.


3

Geniş sistem ve kullanıcı geniş kapsamı tartışma, tek en önemli farktır ötesinde /etc/environmentolduğunu değil başka bir senaryo ~/.bashrc.

Değişken içinde /etc/environment, satır değerini tam anlamıyla alan değişken ataması değerini değiştiremezsiniz (roadmr tarafından önceden belirtildiği gibi).

Ubuntu'nuz yeni bir yol eklemeye çalışarak $PATHiçini boşaltırsanız sizi kilitler/etc/environment

PATH=$PATH:/new_path

Ubuntu Gnome veya Unity giriş sayfanız yanlış şifre şikayet etmeden size izin vermede başarısız olursa. Ve yakın zamanda değişiklik yaptınız /etc/environment, büyük olasılıkla durum bu.

Düzeltme, sanal konsolu CTRL+ ALT+ F1giriş konsolunu oturum açmak, elle kontrol etmek $PATHve /etc/environmentdosyayı düzeltmektir .

Göre , bu , /etc/environmentsatır ortam değişkeni hattı doldurur PAM yığını ile yüklenir.


-1

İkisi arasındaki fark, /etc/enivironmentdosyanın tüm kullanıcılar için çalışacağı, bash.bashrc dosyasının ise yalnızca bu kullanıcı için çalışacağıdır. /etc/environmentDosyada yanlış bir şey yaparsanız, / etc / environment dosyasının içeriğini kopyalayarak bash.bashrc dosyasındaki değişiklikleri kolayca geri yüklerken, sonuçlar şiddetli olabilir. Fakat ilk tercih bash.bashrcdosyaya, ardından / etc / environment dosyasına vermektir . bash.bashrcDosyada değişiklik yaparsanız , terminal önce yerel kullanıcı dosyasını (yani bash.bashrc) ve sonra ana dosyayı (yani /etc/environment) tercih edecektir .


Bence ~ / .bashrc ve /etc/bash.bashrc dosyalarını karıştırıyorsunuz. Birincisi, kullanıcının bir kabuğu açması yereldir, ikincisi bir kabuğu açan tüm kullanıcılar için globaldir.
Dennis,
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.