Jawaban:
Saya pikir halaman wiki komunitas tentang variabel lingkungan akan membantu Anda memilah
Untuk menambah jawaban sagarchalise, saya dapat meringkas apa yang disarankan tautan sebagai tempat yang tepat untuk pengaturan.
/etc/environment
/etc/profile
atau/etc/bash.bashrc
Dari halaman:
/etc/environment
[...] secara khusus dimaksudkan untuk pengaturan variabel lingkungan sistem-lebar. Ini bukan file skrip, melainkan terdiri dari ekspresi penugasan, satu per baris. Secara khusus, file ini menyimpan pengaturan lokal dan jalur sistem.
Menggunakan /etc/profile
adalah cara yang sangat Unix-y untuk pergi, tetapi fungsinya sangat berkurang di bawah Ubuntu. Itu ada hanya untuk menunjuk /etc/bash.bashrc
dan mengumpulkan entri dari /etc/profile.d
.
Di sistem saya, satu-satunya entri yang menarik di profile.d adalah /etc/profile.d/bash_completion.sh
.
Versi sebelumnya dari halaman Ubuntu direkomendasikan ~/.pam_environment
, tetapi halaman saat ini menyarankan bahwa jika itu tidak berhasil, Anda harus menggunakan
~/.profile
- Ini mungkin file terbaik untuk menempatkan penugasan variabel lingkungan, karena akan dieksekusi secara otomatis oleh DisplayManager selama sesi desktop proses startup serta oleh shell login ketika seseorang masuk dari konsol tekstual.
~/.bash_profile
atau ~./bash_login
- Jika salah satu dari ini ada, bash menjalankannya alih-alih ~/.profile
ketika bash dimulai sebagai shell login. Bash akan lebih memilih ~/.bash_profile
untuk ~/.bash_login
. [...] File-file ini tidak akan mempengaruhi sesi grafis secara default. "
~/.bashrc
- "... mungkin tempat termudah untuk mengatur variabel". /etc/environment
dan kapan? Tampaknya tidak bekerja dengan cron, bahkan ketika menggunakanSHELL=/bin/bash
/etc/environment
disukai JAVA_HOME="/opt/java"
dan ANT_HOME="/opt/ant"
bagaimana melakukannya
Kamu sudah memperoleh:
/ etc / profile: file profil. lebar sistem untuk shell Bourne (sh (1)) dan shell kompatibel Bourne (bash (1), ksh (1), ash (1), ...).
yang dijalankan oleh Lucid dan Maverick
/etc/profile.d/*.sh
jika ada, dan jika shell pengguna adalah bash:
/etc/bash.bashrc
Untuk lingkungan pengguna, ada array membingungkan khusus untuk shell dan apakah itu dianggap sebagai "shell login". Jika shell adalah bash:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
untuk sh / dash:
$HOME/.profile
untuk zsh, aku bahkan tidak akan mencoba memahami ini .
Seperti yang disarankan di https://help.ubuntu.com/community/EnvironmentVariables :
Variabel lingkungan global yang dimaksudkan untuk memengaruhi semua pengguna harus masuk /etc/environment
.
Variabel lingkungan khusus pengguna harus ditetapkan ~/.pam_environment
.
Hindari file profil dan rc untuk mengatur variabel lingkungan di Ubuntu. Mereka telah menyebabkan saya sakit kepala lebih dari yang seharusnya.
Namun ini lebih mudah diucapkan daripada dilakukan;)
Mungkin saja Anda mengalami celah konfigurasi yang sama yang ada untuk saya. Lihat solusi untuk rumah terenkripsi di bawah ini.
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
Mengapa jalur statis jelek? ${PATH}
tidak akan bekerja untuk saya. Saya merusak login saya beberapa kali mencoba untuk mengatasinya jadi saya tetap dengan salinan statis default jelek :)
Di Ubuntu, rilis hingga dan termasuk Precise 12.04 Beta 2, jika Anda menggunakan direktori home terenkripsi, Anda perlu memodifikasi /etc/pam.d/common-session
untuk membuatnya dimuat ~/.pam_environment
. Solusi ini tampaknya berfungsi untuk rilis sebelumnya, tetapi saya belum mengujinya.
Ini tampaknya menjadi masalah dengan direktori home terenkripsi. saya tambahkan
sesi diperlukan pam_env.so
di akhir /etc/pam.d/common-session dan sekarang ~ / .pam_environment dibaca. Pada sistem lain tanpa direktori home terenkripsi (juga 10,04) pekerjaan di sekitar tidak diperlukan. Mungkin dalam kasus saya sistem mencoba membaca ~ / .pam_environment sebelum didekripsi.
Diadaptasi dari jawaban saya di Super User: https://superuser.com/a/408373/66856
${HOME}
tidak akan berhasil juga. Tidak ada ekspansi di .pam_environment
.
.pam_environment
, tetapi HOME
biasanya tidak diatur awal. Jika baris itu telah membaca DEFAULT=${PATH}/Applications/jdk
, Anda akan melihat nilai yang PATH
dimasukkan di dalamnya.