Evet, beklenen davranış budur.
Kısacası, davranış şu şekildedir:
- bash etkileşimli bir giriş kabuğu olarak başladı: okur
~/.profile
- bash etkileşimli bir giriş olmayan kabuk olarak başladı: okur
~/.bashrc
Daha fazla bilgi için başlangıç dosyaları hakkındaki bash kılavuzunu okuyun .
Şahsen, bu davranışın garip olduğunu düşünüyorum ve bu tasarım kararı için henüz rasyonelleştirme bulamadım.
Terminolojinin bazı açıklamaları:
- Bir etkileşimli kabuk Eğer, bunun komutları yazabilirsiniz o aracı etkileşim sağlayan bir kabuk. Kullanacağınız kabukların çoğu etkileşimli kabuklardır.
- Bir etkileşimli olmayan kabuk bir kabuk hangi ile etkileşim olamaz. Shell scriptleri etkileşimli olmayan kabuklarda yayınlanır.
- Bir giriş kabuğu sisteminizde giriş yaptığınızda başlatılır kabuktur.
- Bir olmayan giriş kabuk giriş işleminden sonra başlatılan bir kabuktur.
Gördüğünüz çoğu mermi etkileşimli, giriş yapmayan mermilerdir . Bu özellikle, eğer gnome gibi grafiksel bir ortam kullanıyorsanız geçerlidir, çünkü gnome "login kabuğu" dır. GNOME içinde başlayan herhangi bir bash oturumu oturum açma kabuğudur. Gerçek bir etkileşimli giriş kabuğu görmek istiyorsanız sanal bir konsola (kullanarak Ctrl+Alt+F1
) gidin ve daha sonra kullanıcı adınızı ve şifrenizi kullanarak giriş yapın. Bu gerçek bir etkileşimli giriş bash kabuğu. Kullanarak grafik kabuğuna geri dönebilirsiniz Ctrl+Alt+F7
.
--login
Giriş yaptıktan sonra başlasanız bile bash'in bir giriş kabuğu gibi davranmasını sağlayan bir seçenek vardır. Gnome-terminalinin bash'ı giriş kabuğu olarak başlatacak şekilde yapılandırılması --login
seçeneği kullanarak bash başlayacağı anlamına gelir .
Genellikle bash'in her zaman ~/.bashrc
etkileşimli bir kabukta okumasını istersiniz . Bunu yapmamı nasıl tavsiye edeceğim:
Bir ~/.bash_profile
dosya oluşturun . Bash bir giriş kabuğu olarak başlatılmışsa, ~/.bash_profile
önce arama yapmadan önce arayacaktır ~/.profile
. Bash bulursa ~/.bash_profile
o zaman okumaz ~/.profile
.
Aşağıdaki satırları içine yerleştirin ~/.bash_profile
:
[ -f "$HOME/.profile" ] && source "$HOME/.profile"
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
Şimdi bash etkileşimli bir giriş kabuğu olarak başlatılırsa, aşağıdaki dosyaları okuyacak:
~/.bash_profile
~/.profile
~/.bashrc
ve bash etkileşimli bir giriş olmayan kabuk olarak başlatılmışsa:
~/.bashrc
Bash'a özgü olanları ~/.bashrc
ve bash'a özgü olmayanları koymalısınız ~/.profile
. Örneğin PATH
gider ~/.profile
ve HISTCONTROL
gider ~/.bashrc
.
~/.profile
Bash'a özgü olmadığını unutmayın . Diğer metin tabanlı kabukları (örneğin sh veya ksh) ve grafik kabukları (cüceler) de okuyun ~/.profile
. Bu yüzden bash'a özel şeyler koymamalısın ~/.profile
.