Linux .bashrc, .bash_profile ve .profile Dosyaları Farkı
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.

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.