Apa perbedaan fungsional antara .profile
, .bash_profile
dan .bashrc
file?
Apa perbedaan fungsional antara .profile
, .bash_profile
dan .bashrc
file?
Jawaban:
.bash_profile
dan .bashrc
khusus untuk bash
, sedangkan .profile
dibaca oleh banyak shell dengan tidak adanya file konfigurasi shell-spesifik mereka sendiri. ( .profile
digunakan oleh shell Bourne asli.) .bash_profile
atau .profile
dibaca oleh shell login, bersama dengan .bashrc
; subkulit hanya baca .bashrc
. (Antara kontrol kerja dan sistem windowing modern, .bashrc
dengan sendirinya tidak banyak digunakan. Jika Anda menggunakan screen
atau tmux
, layar / windows biasanya menjalankan subkulit alih-alih shell login.)
Gagasan di balik ini adalah bahwa pengaturan satu kali dilakukan oleh .profile
(atau versi khusus shell-nya), dan per-shell barang oleh .bashrc
. Misalnya, Anda umumnya hanya ingin memuat variabel lingkungan sekali per sesi alih-alih membuatnya rusak setiap kali Anda meluncurkan subkulit dalam sesi, sedangkan Anda selalu ingin alias Anda (yang tidak diperbanyak secara otomatis seperti variabel lingkungan).
File konfigurasi shell terkenal lainnya:
/etc/bash_profile
(fallback /etc/profile
) dibaca sebelum pengguna .profile
untuk konfigurasi sistem-lebar, dan juga /etc/bashrc
dalam subshell (tidak ada fallback untuk yang satu ini). Banyak sistem termasuk Ubuntu juga menggunakan /etc/profile.d
direktori yang berisi skrip shell, yang .
( source
) berasal dari /etc/profile
; fragmen di sini adalah per-shell, dengan *.sh
berlaku untuk semua shell Bourne / POSIX yang kompatibel dan ekstensi lain yang berlaku untuk shell tertentu.
.Profil
.profile
adalah untuk hal-hal yang tidak terkait secara khusus Bash
, seperti variabel lingkungan PATH
dan teman, dan harus tersedia kapan saja.
Misalnya, .profile
juga harus dimuat ketika memulai sesi desktop grafis.
.bashrc
.bashrc
adalah untuk mengkonfigurasi penggunaan Bash interaktif, seperti Bash aliases
, mengatur favorit Anda editor
, mengatur Bash prompt
, dll.
.bash_profile
.bash_profile adalah untuk memastikan kedua hal tersebut masuk .profile
dan .bashrc
dimuat login shells
.
Misalnya, .bash_profile
bisa berupa sesuatu yang sederhana seperti
. ~/.profile
. ~/.bashrc
Jika Anda menghilangkan .bashrc
, hanya .profile
akan dimuat.
Menurut halaman manual bash, .bash_profile
dieksekusi untuk shell login, sementara .bashrc
dieksekusi untuk shell non-login interaktif.
Jadi, apakah itu shell login atau non-login?
Saat Anda masuk (ketikkan nama pengguna dan kata sandi) melalui konsol, baik duduk di mesin, atau dari jarak jauh melalui ssh: .bash_profile
dijalankan untuk mengkonfigurasi shell Anda sebelum prompt perintah awal. Tetapi, jika Anda sudah masuk ke mesin Anda dan membuka jendela terminal baru (xterm) di dalam Gnome atau KDE, maka .bashrc
dieksekusi sebelum jendela command prompt. .bashrc
juga dijalankan ketika Anda memulai instance bash baru dengan mengetikkan /bin/bash
terminal.
Pengecualian untuk pedoman jendela terminal adalah Terminal.app Mac OS X, yang menjalankan shell login secara default untuk setiap jendela terminal baru, dan .bash_profile
bukannya menelepon .bashrc
. Emulator terminal GUI lain mungkin melakukan hal yang sama, tetapi kebanyakan cenderung tidak.
Lebih lanjut di sini .