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 --loginyang 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 --loginopsi.
Biasanya Anda ingin bash selalu membaca ~/.bashrcdalam shell interaktif. Inilah cara saya merekomendasikan untuk melakukan itu:
Buat ~/.bash_profilefile. Jika bash dimulai sebagai shell login, ia akan mencari terlebih dahulu ~/.bash_profilesebelum mencari ~/.profile. Jika bash menemukan ~/.bash_profilemaka 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 ~/.bashrcdan barang-barang yang tidak spesifik untuk bash di ~/.profile. Misalnya PATHmasuk ~/.profiledan HISTCONTROLmasuk ~/.bashrc.
Catatan yang ~/.profiletidak 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.