Sudo kullanılarak çalıştırıldığında JAVA_HOME komut dosyasında ayarlanmadı


19

Java'nın yüklenmesini ve JAVA_HOMEortam değişkeninin ayarlanmasını gerektiren bir yükleme komut dosyası çalıştırmaya çalışıyorum .

Ben kurdum JAVA_HOMEiçinde /etc/profileve aynı zamanda bir dosyada aradım java.shiçinde /etc/profile.d. echo $JAVA_HOMEDoğru cevabı alabilirim ve alabilirim ve doğru cevabı bile sudo echo $JAVA_HOMEalabilirim.

In install.shben yönetmeye çalışıyorum, ben bir takılı echo $JAVA_HOME. sudoJava dizinini görmeden bu komut dosyasını çalıştırdığımda ; komut dosyasını çalıştırdığımda sudoboş.

Bunun neden olduğu hakkında bir fikrin var mı?

CentOS kullanıyorum.


Ayrıca Ubuntu
14.04

Yanıtlar:


28

Güvenlik nedeniyle, sudoortam değişkenlerini temizleyebilir, bu yüzden muhtemelen $ JAVA_HOME almıyor. İçin /etc/sudoersdosyanıza bakın env_reset.

Gönderen man sudoers:

env_reset   If set, sudo will reset the environment to only contain the following variables: HOME, LOGNAME, PATH, SHELL, TERM, and USER (in addi-
           tion to the SUDO_* variables).  Of these, only TERM is copied unaltered from the old environment.  The other variables are set to
           default values (possibly modified by the value of the set_logname option).  If sudo was compiled with the SECURE_PATH option, its value
           will be used for the PATH environment variable.  Other variables may be preserved with the env_keep option.

env_keep    Environment variables to be preserved in the user's environment when the env_reset option is in effect.  This allows fine-grained con-
           trol over the environment sudo-spawned processes will receive.  The argument may be a double-quoted, space-separated list or a single
           value without double-quotes.  The list can be replaced, added to, deleted from, or disabled by using the =, +=, -=, and ! operators
           respectively.  This list has no default members.

Yani, JAVA_HOME'u saklamasını istiyorsanız, env_keep'e ekleyin:

Defaults   env_keep += "JAVA_HOME"

Alternatif olarak , JAVA_HOMEkök dizininde ayarlayın ~/.bash_profile.


2
Evet, hepsi bu. Bunu yapabileceğine dair hiçbir fikrim yoktu. Teşekkürler!
Josh

20

Sudo'yu -E (çevreyi koru) seçeneğiyle çalıştırın (man dosyasına bakın) veya install.sh komut dosyasına JAVA_HOME yazın.


-E seçeneği CentOS'ta mevcut değildir.
Zubin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.