Secara tradisional, tempat untuk mendefinisikan variabel lingkungan per pengguna pada sistem unix adalah ~/.profile
. File ini dibaca oleh shell login (yaitu program yang dimulai ketika Anda masuk, dan Anda dapat mengetik perintah ke dalam), asalkan shell login adalah shell yang kompatibel dengan Bourne.
Bash adalah shell yang kompatibel dengan Bourne. Ketika dipanggil sebagai shell login membaca ~/.bash_profile
jika file ini ada, dan ~/.profile
jika ~/.bash_profile
tidak ada.
Sebagai aturan praktis, jika Anda mengetikkan kata sandi dalam mode teks (misalnya, pada konsol teks, atau dari jarak jauh dengan ssh), maka shell yang Anda dapatkan adalah shell login.
Namun, jika Anda mengetikkan kata sandi di program grafis dan masuk ke lingkungan grafis, ini memintas shell login normal. Apakah .profile
dibaca dalam kasus ini tergantung pada bagaimana sesi grafis diatur; misalnya itu bervariasi antara distribusi Linux, antara manajer tampilan dan antara lingkungan desktop. Terkadang salah satu program dalam rantai secara eksplisit memanggil shell login; terkadang salah satu program membaca secara eksplisit ~/.profile
; dan kadang-kadang semua ini tidak terjadi dan ~/.profile
tidak dapat dibaca.
Untuk memberikan contoh variabilitas, sejauh yang saya tahu dari sekilas pada skrip yang terlibat, di Ubuntu 10,04: jika Anda masuk dengan kdm atau lxdm, ~/.bash_profile
baca apakah ada, dan ~/.profile
sebaliknya; jika Anda masuk dengan gdm, hanya ~/.profile
dibaca; jika Anda masuk dengan xdm, ~/.profile
tidak dibaca.
Semua sistem yang saya tahu menyediakan beberapa cara untuk mengatur variabel lingkungan per pengguna. Sayangnya tidak ada jawaban umum.
Perhatikan bahwa kadang-kadang Anda akan melihat rekomendasi untuk mengatur variabel lingkungan ~/.bashrc
, atau memulai shell login di setiap terminal dalam lingkungan GUI. Keduanya adalah ide yang buruk; salah satu alasannya adalah masalah yang Anda alami, yaitu bahwa variabel lingkungan Anda hanya tersedia dalam program yang dimulai melalui terminal, dan tidak dalam program yang dimulai secara langsung dengan ikon atau menu atau pintasan keyboard.