Saya hanya ingin mengatur variabel lingkungan sistem lebar, JAVA_HOME
untuk semua pengguna, termasuk pengguna root .
Persyaratan:
- dapat diakses oleh pengguna normal
- dapat diakses oleh root
- selalu dimuat, tidak hanya untuk bash (gnome-terminal tidak memulai bash secara default)
- untuk bekerja di Ubuntu, Debian dan Red Hat opsional
- hebat jika penambahan bisa dengan mudah dituliskan
Jawaban:
Karena tidak ada yang menambahkan jawaban lengkap di sini adalah apa yang saya anggap terbaik saat ini, setidaknya untuk ubuntu tetapi saya terbuka untuk menyesuaikan jawaban untuk platform * nix lainnya.
Opsi lain yang sudah dipertimbangkan tetapi dikesampingkan:
/etc/environment
berfungsi tetapi lebih sulit untuk dipertahankan karena alat atau orang lain dapat mengeditnya./etc/profile
- sama seperti di atassumber
Di Debian / Ubuntu itu akan menjadi / etc / environment
Saya tidak tahu yang setara dengan Red Hat.
sumber
/etc/environment
. Lihat juga serverfault.com/a/584072/26218Saya tidak mengerti mengapa Anda mengesampingkan / etc / profile. Itu adalah lokasi yang benar.
sumber
Beberapa telah menjawab mengatakan bahwa
/etc/environment
depricated dan / atau tidak digunakan dalam Debian lagi, dan ini (seperti pada versi 7) salah.File ini sebenarnya dibaca oleh PAM - khususnya
pam_env(8)
,, melalui default keenvfile
flag. Halaman manual juga menyatakan default ini di bawah bagian FILES.Para wiki yang dikutip (terutama yang lokal) hanya menyatakan bahwa variabel lingkungan berbasis lokal sekarang dimaksudkan
/etc/profile
. Pernyataan mereka "(dalam versi Debian yang lebih lama, juga / etc / environment)" tidak jelas, dan berada dalam konteks lokal.Grep cepat
/etc/pam.d
menunjukkan melalui :Baris konfigurasi tersebut adalah aditif, dan karena yang pertama hilang
envfile
, maka defaultnya adalah/etc/environment
.Semua ini, tentu saja, bergantung pada biner apa pun yang Anda gunakan (
crond
, shell login, dll) dikompilasi melawan PAM.Akhirnya, ini menyiratkan bahwa sistem lain yang menggunakan PAM (misalnya RedHat), berperilaku sama, seperti yang dapat dilihat di halaman manual masing-masing.
sumber
Satu catatan samping: Lihatlah Modul Lingkungan . Saya menggunakan ini setiap kali saya harus menawarkan lingkungan UNIX yang kompleks, versi, dapat diperluas sendiri, ringkas untuk puluhan atau ratusan pengguna. Ini terutama digunakan pada lingkungan HPC multi-pengguna skala besar. Hanya menggunakannya untuk satu variabel tertentu tentu saja rekayasa berlebihan, tetapi melakukan pekerjaan yang luar biasa setelah Anda membutuhkan lebih dari beberapa paket perangkat lunak dan lingkungannya.
sumber
/etc/profile
harus bekerja. Saya baru saja diuji untuk memastikan, dimasukkanexport SOMETEST=1234
ke/etc/profile
dan setelah login kembaliecho $SOMETEST
memberi saya1234
seperti yang diharapkan. Juga darignome-terminal
sumber
/etc/enviroment
tidak digunakan dalam rilis stabil debian terakhir. Rekomendasi ini adalah membuat*.sh
file Anda sendiri/etc/profile.d/
untuk porpuose ini seperti yang dikatakan Sorin S. Lihat https://wiki.debian.org/EnvironmentVariablessumber
Anda tidak dapat menggunakan ~ file spesifik apa pun dalam kasus ini. begitu....
/etc/profile
akan menjadi tempat yang tepat untuk itu dalam hal ini. Pengguna yang masuk saat ini harus mendapatkan sesi login baru, tetapi ini seharusnya tidak menjadi masalah besar.@ wk01:
/etc/profile
tidak dimuat oleh shell nonlogin secara default. Anda.bashrc
mungkin memuatnya ...sumber