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.
.profile
dibaca ketika Anda masuk. Menempatkan variabel lingkungan.bashrc
tidak berfungsi, dan skenario Anda menggambarkan bahwa: (mungkin GUI) aplikasi yang menjalankan shell ini harus memiliki variabel lingkungan Anda, tetapi jika Anda mendefinisikannya.bashrc
, itu tidak t.Jawaban pasti ada di bagian bash man page di Bash Startup Files . "Ketika shell interaktif yang bukan shell login dimulai, Bash membaca dan mengeksekusi perintah dari ~ / .bashrc, jika file itu ada."
Jawaban pertanyaan Anda lainnya menunjukkan bahwa eshell tidak benar-benar berjalan
bash
. Emacseshell
tidakbash
. Dengan asumsi bahwaeshell
memuat akan.bashrc
sama salahnya dengan menganggapzsh
ataucsh
memuat.bashrc
. Ini shell yang berbeda.Saya melihat dua opsi:
bash
dan kode elispeshell
.Anda mungkin juga tertarik dengan diskusi tentang menambahkan direktori ke jalur tanpa duplikat .
sumber
Mengatur PATH Anda di profil ~ / .harus berhasil. File itu dibaca saat login oleh setiap shell yang sesuai dengan POSIX atau Bourne yang saya tahu termasuk bash. Jika Anda membuat perubahan pada file itu, Anda harus keluar dan masuk kembali agar perubahan diterapkan. Karena PATH adalah bagian dari lingkungan proses login Anda, itu harus diekspor ke setiap shell yang Anda mulai selanjutnya.
sumber