Saya mencoba menjalankan skrip instalasi yang memerlukan java untuk diinstal dan JAVA_HOME
variabel lingkungan harus ditetapkan.
Aku telah menetapkan JAVA_HOME
di /etc/profile
dan juga dalam file saya disebut java.sh
di /etc/profile.d
. Saya bisa echo $JAVA_HOME
dan mendapatkan respons yang benar dan saya bahkan bisa sudo echo $JAVA_HOME
dan mendapatkan respons yang benar.
Di install.sh
saya mencoba menjalankan, saya memasukkan echo $JAVA_HOME
. Ketika saya menjalankan skrip ini tanpa sudo
saya melihat direktori java; ketika saya menjalankan skrip dengan sudo
itu kosong.
Adakah ide mengapa ini terjadi?
Saya menjalankan CentOS.
Jawaban:
Untuk alasan keamanan,
sudo
dapat menghapus variabel lingkungan yang menjadi alasannya mungkin tidak mengambil $ JAVA_HOME. Lihat di/etc/sudoers
file Anda untukenv_reset
.Dari
man sudoers
:Jadi, jika Anda ingin tetap menggunakan JAVA_HOME, tambahkan ke env_keep:
Atau , atur
JAVA_HOME
di root~/.bash_profile
.sumber
Jalankan sudo dengan opsi -E (lingkungan pertahankan) (lihat file man), atau masukkan JAVA_HOME dalam skrip install.sh.
sumber