Saya menggunakan Linux Mint. Shell login saya (cat /etc/passwd | grep myUserName
) adalah bash.
Setelah saya memulai lingkungan desktop grafis saya dan menjalankan emulator terminal darinya, saya dapat melihat .bash_profile
itu tidak bersumber (var lingkungan yang export
ed di dalamnya tidak disetel). Tetapi jika saya masuk dari konsol teks (ctrl +alt +F1 ) atau jalankan bash -l
. secara manual dari emulator terminal, .bash_profile
bekerja dengan baik.
Apakah saya salah ketika saya berpikir bahwa .bash_profile
harus bersumber ketika X dimulai dan semua export
'ed vars harus tersedia di terminal, dijalankan dari X?
P.S. Menempatkan semuanya di .bashrc
dan mengambilnya dari .bash_profile
bukan ide yang baik (https://stackoverflow.com/questions/902946/):hal-hal lingkungan harus bersumber hanya sekali.
Jawaban yang Diterima:
File ~/.bash_profile
dibaca oleh bash ketika itu adalah shell login. Itulah yang Anda dapatkan saat masuk dalam mode teks.
Saat Anda masuk di bawah X, skrip startup dijalankan oleh /bin/sh
. Di Ubuntu dan Mint, /bin/sh
adalah tanda hubung, bukan bash. Dash dan bash keduanya memiliki fitur inti yang sama, tetapi dasbor menempel pada fitur inti ini agar cepat dan kecil sedangkan bash menambahkan banyak fitur dengan biaya yang membutuhkan lebih banyak sumber daya. Biasanya menggunakan tanda hubung untuk skrip yang tidak memerlukan fitur tambahan dan bash untuk penggunaan interaktif (meskipun zsh memiliki banyak fitur yang lebih bagus).
Sebagian besar kombinasi pengelola tampilan (program tempat Anda mengetik nama pengguna dan sandi) dan lingkungan desktop membaca ~/.profile
dari skrip login di /etc/X11/Xsession
, /usr/bin/lightdm-session
, /etc/gdm/Xsession
atau mana saja yang dapat diterapkan. Jadi letakkan definisi variabel lingkungan Anda di ~/.profile
. Pastikan untuk hanya menggunakan sintaks yang didukung tanda hubung.
Jadi apa yang harus Anda taruh di mana?
-
.bash_profile
yang bagus memuat.profile
, dan memuat.bashrc
jika cangkangnya interaktif.. ~/.profile if [[ $- == *i* ]]; then . ~/.bashrc; fi
-
Di
.profile
, masukkan definisi variabel lingkungan, dan setelan sesi lainnya sepertiulimit
. - Di
.bashrc
, masukkan pengaturan interaktif bash seperti alias, fungsi, penyelesaian, ikatan kunci (yang tidak ada di.inputrc
), …