Linux'ta .bashrc ve .profile Arasındaki Fark Nedir?

Yayınlanan: 2022-09-29
Bir bash istemi gösteren Linux dizüstü bilgisayar
fatmawati achmad zaenuri/Shutterstock.com

Bash çalıştıran bir Linux makinesinde oturum açmak, belirli dosyaların okunmasına neden olur. Kabuk ortamınızı yapılandırırlar. Ancak hangi dosyaların ve ne zaman okunacağı kafa karıştırıcı olabilir. İşte gerçekten olan şey.

Farklı Kabuk Türleri

Bir kabuğu başlattığınızda elde ettiğiniz ortam, yapılandırma veya profil dosyalarında tutulan ayarlarla tanımlanır. Bunlar, metin renkleriniz, komut isteminiz, takma adlarınız ve bir programın adını yazdığınızda yürütülebilir dosyalar için aranan yol gibi şeyleri oluşturan bilgileri tutar.

Bu ayarların depolandığı dosya sisteminde farklı konumlarda çok sayıda farklı dosya vardır. Ancak bir kabuk başlattığınızda hangi dosyaların okunduğuna bakmadan önce, ne tür bir kabuk kullandığınız konusunda net olmamız gerekir.

Bilgisayarınızı Açtığınızda Tam Olarak Ne Olur?
İLGİLİ Bilgisayarınızı Açtığınızda Tam Olarak Ne Olur?

Oturum açma kabuğu, oturum açtığınız bir kabuktur. Bilgisayarınızı başlattığınızda ve oturum açtığınızda, grafik masaüstü ortamınızın altında bir oturum açma kabuğu bulunur. SSH bağlantısı üzerinden başka bir bilgisayara bağlanırsanız, bir oturum açma kabuğunda da oturum açarsınız.

Bir terminal penceresi açtığınızda aldığınız kabuk türü, oturum açmayan bir kabuktur. Zaten oturum açmış durumdayken bir kabuğu başlatmak için kimlik doğrulamanız gerekmez. Oturum açma ve oturum açma dışı kabuklar etkileşimli kabuklardır. Bunları talimatları yazarak, "Enter" tuşuna basarak ve ekrandaki yanıtları okuyarak kullanırsınız.

Ayrıca etkileşimli olmayan mermiler de var. Bunlar, bir komut dosyası yürütüldüğünde başlatılan kabuk türleridir. Komut dosyası yeni bir kabukta başlatılır. Komut dosyasının üst kısmındaki shebang #!/bin/bash , hangi kabuğun kullanılması gerektiğini belirtir.

 #!/bin/bash

echo -e "Merhaba Dünya!\n"

Bu komut dosyası, etkileşimli olmayan bir Bash kabuğunda çalıştırılacaktır. Kabuk etkileşimli olmasa bile, komut dosyasının kendisinin olabileceğini unutmayın. Bu komut dosyası, terminal penceresine yazdırılır ve kullanıcı girdisini kolayca kabul edebilir.

İLGİLİ: Linux'ta Başlamak için 9 Bash Komut Dosyası Örneği

Etkileşimli Olmayan Kabuklar

Etkileşimli olmayan kabuklar, başlatıldıklarında hiçbir profil dosyasını okumaz. Ortam değişkenlerini devralırlar, ancak takma adlar hakkında, örneğin komut satırında mı yoksa bir yapılandırma dosyasında mı tanımlandıklarını bilmezler.

Komut satırı parametreleri olarak kendisine iletilen seçeneklere bakarak bir kabuğun etkileşimli olup olmadığını test edebilirsiniz. Seçeneklerde “i” varsa, kabuk etkileşimlidir. Bash özel parametresi $- , geçerli kabuk için komut satırı parametrelerini içerir.

 [[ $- == *i* ]] && echo 'Etkileşimli' || echo 'Etkileşimli değil' 

Etkileşimli ve etkileşimli olmayan kabuk oturumlarını belirlemek için bash testi

"Kedi" anlamına gelen xc adında bir takma ad oluşturalım. Ayrıca bir $PATH değişken setimiz olup olmadığını kontrol edeceğiz.

 takma ad xc=kedi
 yankı $PATH 

Takma ad ayarlama ve $PATH değerini yankılama

Her ikisine de bu küçük betiğin içinden erişmeye çalışacağız. Bu betiği bir düzenleyiciye kopyalayın ve “int.sh” olarak kaydedin.

 #!/bin/bash

xc ~/text.dat
echo "Değişken=$YOL"

Komut dosyasını çalıştırılabilir hale getirmek için chmod kullanmamız gerekecek.

 chmod +x int.sh 

Bir betiği çalıştırılabilir yapmak için chmod kullanma

Komut dosyamızı çalıştıralım:

 ./int.sh 

Bir takma ada erişemeyen ancak devralınan ortam değişkenlerine erişebilen bir komut dosyası çalıştırma

Etkileşimli olmayan kabuğunda betiğimiz takma adı kullanamaz, ancak ortam değişkenini kullanabilir. Etkileşimli kabuklar, profil ve yapılandırma dosyalarının kullanımında daha ilginçtir.

İLGİLİ: Linux'ta Bash'te Ortam Değişkenleri Nasıl Ayarlanır

Etkileşimli Giriş Kabukları

İki tür etkileşimli oturum açma kabuğu vardır. Bunlardan biri, bilgisayarınıza giriş yapmanızı sağlayan kabuktur. Masaüstlerinde bu genellikle masaüstü ortamınızın altında yatan kabuktur. İster pencereli ister döşemeli bir masaüstü ortamı kullanın, bir şeyin Linux sistemiyle kimliğinizi doğrulaması ve oturum açmanıza izin vermesi gerekir.

Masaüstü ortamı kurulu olmayan sunucularda, doğrudan etkileşimli bir kabuğa giriş yaparsınız. Masaüstü ortamından çıkıp bir terminale erişirseniz, aynı şeyi bir masaüstü bilgisayarda da yapabilirsiniz. GNOME'da bunu Ctrl+Alt+F3 tuş kombinasyonu ile yapabilirsiniz. GNOME oturumunuza geri dönmek için Ctrl+Alt+F2 tuş bileşimine basın. SSH üzerinden bağlandığınız kabuk da bir oturum açma kabuğudur.

Çağrılan profil ve yapılandırma dosyaları, ortam değişkenleri kullanılarak ayarlanabilir, böylece dağıtımdan dağıtıma değişebilirler. Ayrıca, tüm dosyalar her dağıtım tarafından kullanılmaz. Genel bir Bash kurulumunda, etkileşimli oturum açma kabukları “/etc/profile” dosyasını okur. Bu, sistem genelinde kabuk yapılandırma seçeneklerini içerir. Varsa, bu dosya “/etc/bash.bashrc” ve “/usr/share/bash-completion/bash_completion” gibi dosyaları da okur.

Bash daha sonra bir “~/.bash_profile” dosyası arar. Mevcut değilse, Bash bir “~/.bash_login” dosyası arar. Bu dosya yoksa, Bash bir “.profile” dosyası bulmaya çalışır. Bu dosyalardan biri bulunduğunda ve okunduğunda, Bash aramayı durdurur. Bu nedenle çoğu durumda “~/.profile” dosyasının okunması pek olası değildir.

Genellikle, “~/.bash_profile” dosyanızda veya bir tür geri dönüş engeli olarak “~/.profile” dosyanızda buna benzer bir şey bulacaksınız:

 # bash çalıştırılıyorsa
if [ -n "$BASH_VERSION" ]; sonra
  # varsa .bashrc'yi dahil et
  if [ -f "$HOME/.bashrc" ]; sonra
    . "$HOME/.bashrc"
  fi
fi

Bu, aktif kabuğun Bash olduğunu kontrol eder. Eğer öyleyse, bir “~/.bashrc” dosyası arar ve bulunursa onu okur.

Etkileşimli Giriş Yapılmayan Kabuklar

Bir Bash etkileşimli oturum açmayan kabuk “/etc/bash.bashrc” okur ve ardından “~/.bashrc” dosyasını okur. Bu, Bash'in sistem genelinde ve kullanıcıya özel ayarlara sahip olmasını sağlar.

Bu davranış, Bash derlendiğinde derleme bayraklarıyla değiştirilebilir, ancak Bash'in “/etc/bash.bashrc” dosyasını okumayan ve okumayan bir sürümüyle karşılaşmak nadir ve tuhaf bir durum olacaktır.

Masaüstünüzde bir terminal penceresi her açtığınızda, bu iki dosya, etkileşimli, oturum açmayan kabuğun ortamını yapılandırmak için kullanılır. Aynı şey, Geany IDE'deki terminal penceresi gibi uygulamalar tarafından başlatılan kabuklar için de olur.

Konfigürasyon Kodunuzu Nereye Koymalısınız?

Kişisel özelleştirme kodunuzu koymak için en iyi yer “~/.bashrc” dosyanızdır. Takma adlarınız ve kabuk işlevleriniz “~/.bashrc” içinde tanımlanabilir ve bunlar tüm etkileşimli kabuklarda okunur ve kullanımınıza sunulur.

Dağıtımınız oturum açma kabuklarında “~/.bashrc” dosyanızı okumuyorsa ve bunu istiyorsanız, bu kodu “~/.bash_profile” dosyanıza ekleyin.

 # bash çalıştırılıyorsa
if [ -n "$BASH_VERSION" ]; sonra
  # varsa .bashrc'yi dahil et
  if [ -f "$HOME/.bashrc" ]; sonra
    . "$HOME/.bashrc"
  fi
fi

Modülerlik En İyisidir

Çok sayıda takma adınız varsa veya aynı takma adları birkaç makinede kullanmak istiyorsanız, bunları kendi dosyalarında ve kabuk işlevlerinizle aynı şekilde saklamak en iyisidir. Bu dosyaları “~/.bashrc” dosyanızdan çağırabilirsiniz.

Test bilgisayarımızda, takma adlar “.bash_aliases” adlı bir dosyada saklanır ve “.bash_functions” adlı bir dosya kabuk işlevlerini tutar.

Bunları “~/.bashrc” dosyanızın içinden şu şekilde okuyabilirsiniz:

 # takma adlarımda oku
if [ -f ~/.bash_aliases ]; sonra
  . ~/.bash_aliases
fi

# kabuk fonksiyonlarımda oku
if [ -f ~/.bash_functions ]; sonra
  . ~/.bash_fonksiyonları
fi 
Linux'ta Takma Adlar ve Kabuk İşlevleri Nasıl Oluşturulur
İLGİLİ Linux'ta Takma Adlar ve Kabuk İşlevleri Nasıl Oluşturulur

Bu, takma adlarınızı ve işlevlerinizi bilgisayarlar arasında kolayca taşımanıza olanak tanır. Her bilgisayardaki “~/.bashrc” dosyasına yukarıdaki satırları eklemeniz ve takma adlarınızı ve kabuk fonksiyonlarını içeren dosyaları her bilgisayardaki ana dizininize kopyalamanız yeterlidir.

Bu, bir bilgisayardaki “~/.bashrc” dosyasındaki tüm tanımları diğer bilgisayarların her birindeki “~/.bashrc” dosyalarına kopyalamanız gerekmediği anlamına gelir. Ayrıca, özellikle farklı dağıtımlarda Bash çalıştırıyorlarsa, tüm “~/.bashrc” dosyanızı bilgisayarlar arasında kopyalamaktan daha iyidir.

Özetle

Gerçekten bilmeniz gereken dosyalar şunlardır:

  • /etc/profile : Sistem genelinde yapılandırma ayarları. Oturum açma kabukları tarafından kullanılır.
  • ~/.bash_profile : Bireysel kullanıcılar için ayarları tutmak için kullanılır. Oturum açma kabukları tarafından kullanılır.
  • ~/.bashrc : Bireysel kullanıcılar için ayarları tutmak için kullanılır. Etkileşimli oturum açmayan kabuklar tarafından kullanılır. Oturum açma kabukları için “~/.bash_profile” veya “~/.profile” dosyanızdan da çağrılabilir.

Kullanışlı bir yöntem, kişisel ayarlarınızı “~/.bashrc” içine koymak ve “~./bash_profile” dosyanızın “~/.bashrc” dosyanızı çağırdığından emin olmaktır. Bu, kişisel ayarlarınızın tek bir dosyada tutulduğu anlamına gelir. Oturum açma ve oturum açma dışı kabuklar arasında tutarlı bir kabuk ortamı elde edersiniz. Bunu, takma adlarınızı ve kabuk işlevlerinizi sistem dışı dosyalarda depolamakla birleştirmek, düzgün ve sağlam bir çözümdür.