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.