Linux .bashrc, .bash_profile ve .profile Dosyaları Farkı
2 min read

Linux .bashrc, .bash_profile ve .profile Dosyaları Farkı

Linux .bashrc, .bash_profile ve .profile dosyaları shell startup dosyalarıdır ve başlangıçta otomatik olarak komutlarınızı çalıştırırlar.
Linux .bashrc, .bash_profile ve .profile Dosyaları Farkı
Photo by Gabriel Heinzer / Unsplash

Komut satırında çok fazla zaman harcıyorsanız, shell ortamınızı özelleştirmek isteyebilirsiniz. Bu, alias oluşturmak, $PATH değişkenine yeni bir dizin eklemek veya shell prompt görünümünü değiştirmek olabilir.

Bu özelleştirmeleri yapabilmeniz için gerekli komutları .bashrc, .bash_profile veya bash shell tarafından okunan ve yürütülen başka bir yapılandırma dosyasına koymayı söyledikleri zaman kafanız karışmış olabilir. Çünkü henüz hangi dosya ne amaçla kullanılır bilmiyoruz .

Bu yazıda, bash startup dosyaları, .bashrc ve .bash_profile dosyaları arasındaki fark hakkında konuşacağız.

Interactive Login ve Non-Login Shell Nedir

Bash çağrıldığında, önce bir dizi startup dosyasındaki komutları okur ve yürütür. Hangi dosyaların okunacağı, shell'in interactive login veya interactive non-login shell olarak çağrılmasına bağlıdır.

Bir shell, öncelikle  interactive veya non-interactive olabilir. Peki nedir bunlar?

Basit bir ifadeyle, interactive shell bir kullanıcının terminalini okuyan ve ona yazan bir shell iken, non-interactive shell, bir script çalıştırırken olduğu gibi bir terminalle ilişkilendirilmemiş bir shell'dir.

Ardından bir interactive shell, login veya non-login shell olabilir. Peki tekrardan nedir bunlar?

Bir kullanıcı terminale ssh aracılığıyla veya local olarak uzaktan giriş yaptığında veya bash --login seçeneğiyle başlatıldığında bir login shell çağrılır. Login shell üzerinden, örneğin shell prompt'a bash yazarken olduğu gibi veya yeni bir Gnome terminali sekmesi açarken ise interactive non-login shell çağrılır.

Shell tipleri
ℹ️
Bir interactive shell'in login veya non-login olduğunu anlamak için echo $0 komutunu çalıştırabilirsiniz. Eğer çıktı olarak -bash değeri alıyorsanız login shell, bash değeri alıyorsanız non-login shell kullanıyorsunuz demektir.

Bash Startup Dosyaları

Bash, interactive login shell olarak çağrıldığında, /etc/profile dosyasını arar ve dosya varsa, dosyada listelenen komutları çalıştırır. Ardından Bash, ~/.bash_profile, ~/.bash_login ve ~/.profile dosyalarını listelenen sırayla arar ve bulunan ilk okunabilir dosyadan komutları yürütür.

Bash, interactive non-login shell olarak çağrıldığında ise, ~/.bashrc dosyası varsa ve okunabilir ise içindeki komutları okur ve yürütür.

.bashrc ve .bash_profile Dosyaları Arasındaki Fark

.bash_profile, Bash interactive login shell olarak çağrıldığında okunur ve yürütülürken, .bashrc interactive non-login shell için yürütülür.

$PATH ortam değişkenini özelleştirmek gibi yalnızca bir kez çalışması gereken komutları çalıştırmak için .bash_profile kullanmanız önerilir.

.bashrc dosyasına her yeni shell başlattığınızda çalışması gereken komutları koyun. Bu, alias'lar, özel prompt'lar, history özelleştirmeleri vb. işlemleri içerebilir.

Genellikle, ~/.bash_profile, alttaki gibi .bashrc dosyasını çalıştıran satırlar içerir. Bu, terminalde her oturum açtığınızda, her iki dosyanın da okunduğu ve yürütüldüğü anlamına gelir.

if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

Çoğu Linux dağıtımı ~/.bash_profile yerine ~/.profile kullanır. ~/.profile dosyası tüm sheller tarafından okunurken, ~/.bash_profile yalnızca Bash tarafından okunur.

Sisteminizde herhangi bir startup dosyası yoksa, kendiniz oluşturabilirsiniz.

Özet

.bash_profile ve .bashrc, Bash çağrıldığında çalıştırılan shell komutlarını içeren dosyalardır. .bash_profile interactive login shell'de okunur ve yürütülürken, interactive non-login shell'de .bashrc okunur ve yürütülür.

Bash startup dosyaları hakkında daha fazla bilgi için Bash kılavuzuna bakabilirsiniz.