Saya telah menggunakan sejumlah sistem berbasis * nix yang berbeda tahun ini, dan sepertinya setiap cita rasa Bash yang saya gunakan memiliki algoritma yang berbeda untuk memutuskan skrip startup mana yang akan dijalankan. Untuk keperluan tugas-tugas seperti mengatur variabel dan alias lingkungan dan mencetak pesan startup (mis. MOTD), skrip startup mana yang tepat untuk melakukan ini?
Apa perbedaan antara menempatkan hal-hal dalam .bashrc
, .bash_profile
dan .environment
? Saya juga melihat file lain seperti .login
, .bash_login
, dan .profile
; apakah ini pernah relevan? Apa perbedaan yang dijalankan ketika masuk secara fisik, masuk jarak jauh melalui ssh, dan membuka jendela terminal baru? Apakah ada perbedaan signifikan di seluruh platform (termasuk Mac OS X (dan Terminal.app-nya) dan Cygwin Bash)?
sumber
/etc/bashrc
untuk memenuhi jawabannya?Klasik,
~/.profile
digunakan oleh Bourne Shell, dan mungkin didukung oleh Bash sebagai ukuran warisan. Sekali lagi,~/.login
dan~/.cshrc
digunakan oleh C Shell - Saya tidak yakin Bash menggunakannya sama sekali.Ini
~/.bash_profile
akan digunakan sekali, saat login. The~/.bashrc
Script adalah membaca setiap kali shell dimulai. Ini analog dengan/.cshrc
untuk C Shell.Salah satu konsekuensinya adalah bahwa barang-barang di
~/.bashrc
harus sekecil mungkin untuk mengurangi overhead ketika memulai shell non-login.Saya percaya
~/.environment
file tersebut adalah file kompatibilitas untuk Korn Shell.sumber
Saya menemukan informasi tentang .bashrc dan .bash_profile di sini untuk meringkasnya:
Juga ada tindak lanjut lengkap pada masing-masing file konfigurasi di sini
Ini mungkin bahkan tergantung pada distro, tidak semua distro memilih untuk memiliki setiap konfigurasi dengan mereka dan beberapa bahkan lebih. Tetapi ketika mereka memiliki nama yang sama, mereka biasanya memasukkan konten yang sama.
sumber
Menurut Josh Staiger , Terminal.app Mac OS X sebenarnya menjalankan shell login daripada shell non-login secara default untuk setiap jendela terminal baru, memanggil .bash_profile alih-alih .bashrc.
Dia merekomendasikan:
sumber
Tempat yang bagus untuk melihat adalah halaman manual bash. Ini versi online. Cari bagian "INVOKASI".
sumber
Saya telah menggunakan distro Debian-family yang tampaknya mengeksekusi
.profile
, tetapi tidak.bash_profile
, sedangkan turunan RHEL mengeksekusi.bash_profile
sebelumnya.profile
.Tampaknya berantakan ketika Anda harus mengatur variabel lingkungan untuk bekerja di OS Linux apa pun.
sumber