Ya, itulah perilaku yang diharapkan.
Singkatnya, perilaku tersebut adalah sebagai berikut:
- bash dimulai sebagai shell login interaktif: terbaca
~/.profile
- bash dimulai sebagai shell non-login interaktif: baca
~/.bashrc
Baca manual bash tentang file startup untuk detail lebih lanjut.
Secara pribadi, saya pikir perilaku ini aneh dan saya belum menemukan rasionalisasi untuk keputusan desain ini.
Beberapa penjelasan tentang terminologi:
- Sebuah shell interaktif adalah shell dengan mana Anda dapat berinteraksi, yang berarti Anda dapat mengetik perintah di dalamnya. Kebanyakan cangkang yang akan Anda gunakan adalah cangkang interaktif.
- Sebuah shell non-interaktif adalah shell dengan yang Anda tidak bisa berinteraksi. Script shell dijalankan di dalam shell non-interaktif.
- Sebuah shell login adalah shell yang dimulai ketika Anda login ke sistem anda.
- Sebuah non-login shell adalah shell yang dimulai setelah proses login.
Sebagian besar shell yang Anda lihat adalah shell non-login interaktif . Ini terutama benar jika Anda menjalankan lingkungan grafis seperti gnome, karena gnome adalah "shell login". Setiap sesi bash yang dimulai di dalam gnome adalah shell non-login. Jika Anda ingin melihat shell login interaktif nyata kemudian pergi ke konsol virtual (menggunakan Ctrl+Alt+F1
) dan kemudian login menggunakan nama pengguna dan kata sandi Anda. Itu adalah shell bash login interaktif nyata. Anda dapat kembali ke shell grafis menggunakan Ctrl+Alt+F7
.
Ada opsi --login
yang akan membuat bash berperilaku seolah-olah itu adalah shell login bahkan jika dimulai setelah Anda login. Mengkonfigurasi gnome-terminal untuk memulai bash sebagai shell login berarti bash akan mulai bash menggunakan --login
opsi.
Biasanya Anda ingin bash selalu membaca ~/.bashrc
dalam shell interaktif. Inilah cara saya merekomendasikan untuk melakukan itu:
Buat ~/.bash_profile
file. Jika bash dimulai sebagai shell login, ia akan mencari terlebih dahulu ~/.bash_profile
sebelum mencari ~/.profile
. Jika bash menemukan ~/.bash_profile
maka itu tidak akan dibaca ~/.profile
.
Masukkan baris berikut di ~/.bash_profile
:
[ -f "$HOME/.profile" ] && source "$HOME/.profile"
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
Sekarang jika bash dimulai sebagai shell login interaktif itu akan membaca file-file berikut:
~/.bash_profile
~/.profile
~/.bashrc
dan jika bash dimulai sebagai shell non-login interaktif:
~/.bashrc
Anda harus meletakkan barang-barang yang khusus untuk bash ~/.bashrc
dan barang-barang yang tidak spesifik untuk bash di ~/.profile
. Misalnya PATH
masuk ~/.profile
dan HISTCONTROL
masuk ~/.bashrc
.
Catatan yang ~/.profile
tidak spesifik untuk bash. Kerang berbasis teks lainnya (misalnya sh atau ksh) dan kerang grafis (gnome) juga membaca ~/.profile
. Itulah mengapa Anda tidak harus menempatkan barang-barang tertentu pesta di ~/.profile
.