Solusi 1:
.bash_profile
dan .bashrc
khusus untuk bash
, sedangkan .profile
dibaca oleh banyak shell tanpa adanya file konfigurasi khusus shell mereka sendiri. (.profile
digunakan oleh Bourne shell asli.) .bash_profile
atau .profile
dibaca oleh shell login, bersama dengan .bashrc
; subkulit hanya membaca .bashrc
. (Antara kontrol pekerjaan dan sistem windowing modern, .bashrc
dengan sendirinya tidak banyak digunakan. Jika Anda menggunakan screen
atau tmux
, screens/windows biasanya menjalankan subkulit alih-alih shell login.)
Ide di balik ini adalah penyiapan satu kali dilakukan oleh .profile
(atau versi khusus shellnya), dan hal-hal per-shell oleh .bashrc
. Misalnya, Anda biasanya hanya ingin memuat variabel lingkungan satu kali per sesi alih-alih membuatnya dipukul setiap kali Anda meluncurkan subkulit dalam satu sesi, sedangkan Anda selalu menginginkan alias (yang tidak disebarkan secara otomatis seperti variabel lingkungan).
File konfigurasi shell penting lainnya:
/etc/bash_profile
(pengganti /etc/profile
) dibaca sebelum .profile
pengguna untuk konfigurasi seluruh sistem, dan juga /etc/bashrc
dalam subkulit (tidak ada cadangan untuk yang ini). Banyak sistem termasuk Ubuntu juga menggunakan /etc/profile.d
direktori yang berisi skrip shell, yaitu .
(source
)-ed dari /etc/profile
; fragmen di sini adalah per-shell, dengan *.sh
berlaku untuk semua shell yang kompatibel dengan Bourne/POSIX dan ekstensi lain yang berlaku untuk shell tersebut.
Solusi 2:
.profil
.profile
adalah untuk hal-hal yang tidak secara khusus terkait dengan Bash
, seperti variabel lingkungan PATH
dan teman, dan harus tersedia kapan saja.
Misalnya, .profile
juga harus dimuat saat memulai sesi desktop grafis.
.bashrc
.bashrc
adalah untuk mengonfigurasi penggunaan Bash interaktif, seperti Bash aliases
, menyetel editor
favorit Anda , menyetel Bash prompt
, dll.
.bash_profile
.bash_profile adalah untuk memastikan kedua hal di .profile
dan .bashrc
dimuat untuk login shells
.
Misalnya, .bash_profile
bisa jadi sesuatu yang sederhana seperti
. ~/.profile
. ~/.bashrc
Jika Anda menghilangkan .bashrc
, hanya .profile
akan dimuat.
Solusi 3:
Menurut halaman manual bash, .bash_profile
dieksekusi untuk shell login, sedangkan .bashrc
dieksekusi untuk shell non-login interaktif.
Jadi, apa itu shell login atau non-login?
Saat Anda masuk (ketik nama pengguna dan kata sandi) melalui konsol, baik duduk di depan mesin, atau dari jarak jauh melalui ssh:.bash_profile
dijalankan untuk mengonfigurasi shell Anda sebelum prompt perintah awal. Namun, jika Anda telah masuk ke mesin Anda dan membuka jendela terminal baru (xterm) di dalam Gnome atau KDE, maka .bashrc
dijalankan sebelum prompt perintah jendela. .bashrc
juga dijalankan saat Anda memulai instance bash baru dengan mengetikkan /bin/bash
di terminal.
Pengecualian untuk pedoman jendela terminal adalah Terminal.app Mac OS X, yang menjalankan shell login secara default untuk setiap jendela terminal baru, memanggil .bash_profile
bukannya .bashrc
. Emulator terminal GUI lainnya mungkin melakukan hal yang sama, tetapi kebanyakan cenderung tidak.
Selengkapnya di sini.