Bash Başlatma Dosyaları
Önceki VI. Oylum - Bash'in Özellikleri Sonraki
Bash Başlatma Dosyaları
Bu bölümde Bash'in kendi başlatma dosyalarını nasıl çalıştırdığı açıklanmıştır. Herhangi bir dosya varsa ama okunamıyorsa Bash bir hata raporlar. Yaklaşık karakterleri dosya isimlerinde Yaklaşık (~) Yorumlaması bölümünde açıklandığı gibi yorumlanır.
Etkileşimli kabuklar Etkileşimli Kabuklar bölümünde açıklanmıştır.
Bir etkileşimli giriş kabuğu olarak veya --login seçeneği ile çağrıldığında
Bash bir etkileşimli giriş kabuğu olarak veya --login seçeneği ile bir etkileşimsiz kabuk olarak çağrıldığında, /etc/profile dosyası varsa dosyayı okur ve komutlarını çalıştırır. Bu dosya okunduktan sonra sırayla ~/.bash_profile, ~/.bash_login, ve ~/.profile dosyalarının varlığına bakar, var ve okunabilir olanlarını okur ve komutlarını çalıştırır. --noprofile seçeneği ile başlatarak Bash'in bu davranışı engellenebilir.
Bir giriş kabuğu çıkarken, ~/.bash_logout dosyasına bakar, varsa ve okunabilirse dosyayı okur ve komutlarını çalıştırır.
Etkileşimli ancak giriş kabuğu olmayan bir kabuk olarak çağrıldığında
Giriş kabuğu olmayan bir etkileşimli kabuk başlatıldığında Bash, varsa ~/.bashrc dosyasını okur ve komutlarını çalıştırır. Bu işlem --norc seçeneği ile engellenebilir. --rcfile dosyaismi seçeneği ile ~/.bashrc dosyası yerine dosyaismi dosyasının okunması ve komutlarının çalıştırılması sağlanabilir.
Öyleyse, her girişe özel ilklendirme sonrası (ya da öncesi) için
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
satırı ~/.bash_profile dosyanızda bulunmalıdır.
Etkileşimsiz olarak çağrıldığında
Bash, örneğin bir betiği çalıştırmak için etkileşimsiz olarak başlatıldığında, ortamdaki BASH_ENV değişkenine bakar, varsa değerini okunup çalıştırılacak bir dosya ismi olarak yorumlar. Bash burada,
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
satırı çalıştırılmış gibi davranır, ancak PATH değişkeninin değeri dosyayı aramak için kullanılmaz.
Yukarıda da bahsedildiği gibi, --login seçeneği ile başlatılan bir etkileşimsiz kabuk, komutları giriş kabuğunun başlatma dosyalarından okuyup çalıştırmaya uğraşır.
sh ismiyle çağrıldığında
Bash, sh ismiyle çağrılırsa, sh'ın tarihsel sürümlerinin başlatma davranışlarını POSIX standardına da uydurmaya çalışarak mümkün olduğunca taklit etmeyi dener.
Bir etkileşimli giriş kabuğu olarak veya --login seçeneği ile bir etkileşimsiz kabuk olarak çağrıldığında, komutları önce /etc/profile dosyasından okumayı ve çalıştırmayı dener ve sırasıyla ~/.bash_profile, ~/.bash_login, ve ~/.profile dosyalarının varlığına bakar, var ve okunabilir olanlarını okur ve komutlarını çalıştırır. --noprofile seçeneği ile başlatarak bu davranış engellenebilir. Bir etkileşimli kabuk olarak sh ismiyle çağrıldığında Bash, ortamdaki ENV değişkenine bakar, varsa değerini okunup çalıştırılacak bir dosya ismi olarak yorumlar.
sh olarak çağrılan bir kabuk başka bir başlatma dosyasını okuyup komutlarını çalıştırmayı denemez, zaten --rcfile seçeneğinin de bir etkisi yoktur.
sh olarak çağrıldığında, Bash başlangıç dosyalarını okuduktan sonra POSIX kipine girer.
POSIX kipinde çağrıldığında
Bash --posix komut satırı seçeneği ile POSIX kipinde başlatıldığında, başlangıç dosyaları için POSIX standardını izler. Bu kipte etkileşimli kabuklar ENV değişkenini yorumlayarak bir dosya ismi elde eder ve komutları bu dosyadan okuyup çalıştırır. Bundan başka başlatma dosyasına bakılmaz.
Uzaktan erişilebilir kabuk süreci olarak çağrıldığında
Bash rshd gibi bir uzak kabuk süreci tarafından mı çalıştırılmak istendiğini saptamaya çalışır. Bash, rshd tarafından çalıştırılmak istendiğini saptadığında, komutları ~/.bashrc dosyası var ve okunabilirse oradan okuyup çalıştırır. sh olarak çağrıldığında bunu yapmaz. --norc seçeneği bu davranışı engellemekte kullanılabilir ve --rcfile seçeneği ile başka bir dosyadan komutların okunup çalıştırılması sağlanabilir, ancak rshd genellikle kabuğu bu seçeneklerle çağırmaz.
Farklı Etkin ve Gerçek UID/GID ile çağrıldığında
Bash başlatıldığında etkin kullanıcı (grup) kimliği ile gerçek kullanıcı (grup) kimliği aynı değilse, hiçbir başlatma dosyası okunmaz, kabuk işlevleri ortamdan miras alınmaz, ortamda görünse bile SHELLOPTS değişkeni yoksayılır ve etkin kullanıcı kimliğine gerçek kullanıcı kimliği atanır. Çağrı sırasında -p seçeneği verilmişse etkin kullanıcı kimliğinin gerçek kullanıcı kimliğine ayarlanması dışında başlatma davranışı aynıdır.
Önceki Üst Ana Başlık Sonraki
Bash'in Çağrılması Başlangıç Etkileşimli Kabuklar
Bir Linux Kitaplığı Sayfası