Bash çalıştıran Linux makinesi, kabuk ortamınızı yapılandırmak için oturum açtığınızda belirli dosyaları okur. Ancak hangi dosyaların ve ne zaman okunacağı kafa karıştırıcı olabilir, bu da .bashrc dosyasını mı, .bash_profile dosyasını mı yoksa başka bir yapılandırma dosyasını mı düzenleyeceğinizi bilmeyi zorlaştırır. İşte bilmeniz gerekenler.
Farklı Shell 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.
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 kabuklar da vardır. 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 "Hello, World!\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.
Etkileşimli Olmayan Shell
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 'Interactive' || echo 'Non-interactive'
“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.
alias xc=cat
echo $PATH
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 "Variable=$PATH"
Komut dosyasını çalıştırılabilir hale getirmek için chmod kullanmamız gerekecek.
chmod +x int.sh
Komut dosyamızı çalıştıralım:
./int.sh
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.
Etkileşimli Login Shell
İ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:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$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 Non-Login Shell
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.
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$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:
# read in my aliases if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # read in my shell functions if [ -f ~/.bash_functions ]; then . ~/.bash_functions fi
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 saklamakla birleştirmek, düzgün ve sağlam bir çözümdür.
Yazının orijinalini buradan okuyabilirsiniz.