.Profile ve .bash_profile arasındaki fark nedir ve neden sistemimde bir .profile dosyası yok?


12

Bu yüzden Linux için oldukça yeniyim ve son zamanlarda netbook'uma Fedora 19 yükledim. Linux ve CLI hakkında daha derin bir anlayışa sahip olmak istiyorum, bu yüzden şimdi Linux Öğren: Zor Yol'u okuyorum .

3. alıştırmada yazar aşağıdaki komutları verir:

  • ls -al
  • kedi. profili

Bu talimatları izlemeye çalışıyorum ama boşuna. Ls -al'den görebildiğim gibi kullanıcı adı dizinimde .profile dosyası yok. Öğrendiklerimden .bash_profile ve .profile dosyası hemen hemen aynı. Araştırmamdan sonuçlandırdığım tek fark .bash_profile'ın önce kontrol edilmesidir.

Anlamadığım şey neden Linux'ta aynı işlev için birden fazla dosya var, Yazar neden .bash_profile değil .profile kullanıyor (eğer doğru bir şekilde anlarsam .profile sistem ilk bulursa okunmaz) ve nasıl olur da sistemimde .profile dosyası yok?


Ayrıca sorunuzun bir kısmını yanıtlayan unix.stackexchange.com/questions/45684/… adresine bakın . Ayrıca, unix.stackexchange.com/questions/67940/… , bu çeşitli dosyaların muhtemelen daha önce uğraştığınızdan daha gelişmiş şeyler için karışıklığa yol açmasının nedenlerinden birini gösterir.
msw

Yanıtlar:


13

.profileTarih olarak bilinen orijinal Bourne kabuğuna geri sh. GNU kabuğu bash(seçeneklerine bağlı olarak) Bourne kabuğunun bir üst kümesi olduğundan, her iki kabuk da aynı başlangıç ​​dosyasını kullanabilir. Yani, yalnızca shkomutların girilmesi şartıyla.profile

Örneğin, aliasgeçerli bir yerleşik komuttur bashancak bilinmeyen bir komuttur sh. Bu nedenle, .profileana dizininizde sadece bir tane varsa ve içine bir aliasifade koyarsanız , shşikayet ederdiniz. Bu nedenle, yalnızca bir .profiledosya yoksa bash'ın okuyacağı kabuk başlatma komutlarına sahip bir bash'a özgü dosya vardır .

Aslında bu, bazı kurulumlarda biraz fazla basitleştirme ve Fedora'ya aşina değilim. Bash altında, /etc/profileana dizininizdeki herhangi bir dosyadan önce kabuk tarafından okunur. Sistem çapında başlatma komut dosyası varsa, genellikle şöyle bir şey söyler:

if there is a $HOME/.profile:
   source it
elseif bash is my shell and there is a $HOME/.bash_profile:
   source that

Neden böyle? On yıllar boyunca kabuk lehçelerine uyumluluk denemesi. Eğitim neden bu şekilde yazılıyor? Bourne kabuğu artık çok fazla kullanılmıyor ve bazı insanlar bash'tan başka Bourne benzeri bir kabuk olduğunu bile bilmiyorlar. (Sınırlı) Bourne sözdizimi daha büyük platformlar arası uyumluluk için kullanıldığında bile, dashPOSIX uyumluluk modunda genellikle veya bash tarafından çalıştırılır . Gerçekten de, gerçek Bourne kabuğu kaynağı muhtemelen şimdi Novell'e ait gibi görünen Unix System V'in telif hakkı bileşenidir , ancak bir şey varsa, bununla ne yaptığını bilmiyorum.

Başlayan kullanıcı, kullanım için ya $HOME/.profileya $HOME/.bash_profileama hem ve iyi olacak değil. Zaten bununla ilgili bir .bash_profileçalışmanız olduğundan, kurulumunuzun ihtiyaç duyduğu sisteme özgü şeyler olabilir.


Teşekkürler! Sanırım şimdi biraz daha iyi anlıyorum, sanırım hala öğrenecek çok şey var.
Emiroe

Bunların çoğu gerçekten bilmeniz gerekmeyen tarihsel önemsiz; cevabımın son paragrafına odaklan. Ayrıca burada yeni olduğunuz için, buradaki en yüksek teşekkür biçimi olan bir cevabı onaylayabilir ve kabul edebilirsiniz .
msw

Evet, cevabını zaten kabul ettim. Birisinin bu kadar çaba göstermesini beklemiyordum, bu yüzden çok minnettarım. Cevabınızı kabul ettim ancak 15 üne ihtiyaç duyduğundan ve 8 puanım olduğu için onaylayamıyorum. Bunun için çok üzgünüm!
Emiroe

15 tekrar sınırını unuttum; haklısın.
msw

4
Tarih bonusu # 1 : Gerçek Bourne kabuğu nihayet esaretten kaçtı. minnie.tuhs.org , V7'nin tam kaynak koduna (Bourne kabuğuyla ilk unix sürümü) sahiptir ve heirloom.sourceforge.net , Bourne kabuğunun aslında hala kullanılabilir olan biraz daha yeni bir sürümüne sahiptir. Geçmiş bonusu # 2 : aliasPOSIX için gereklidir, bu yüzden shetrafında bilmeyen pek çok şey yoktur.
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.