Estou tentando executar um script de instalação que requer que o java seja instalado e a JAVA_HOME
variável de ambiente seja definida.
Eu configurei JAVA_HOME
em /etc/profile
e também em um arquivo que eu chamei java.sh
em /etc/profile.d
. Eu posso echo $JAVA_HOME
e recebo a resposta correta e posso equilibrar sudo echo $JAVA_HOME
e obter a resposta correta.
No install.sh
que estou tentando executar, inseri um echo $JAVA_HOME
. Quando executo esse script sem sudo
ver o diretório java; quando executo o script, sudo
ele fica em branco.
Alguma idéia de por que isso está acontecendo?
Estou executando o CentOS.
Respostas:
Por motivos de segurança,
sudo
pode limpar as variáveis de ambiente e é por isso que provavelmente não está recebendo $ JAVA_HOME. Procure no seu/etc/sudoers
arquivoenv_reset
.De
man sudoers
:Portanto, se você quiser manter JAVA_HOME, adicione-o ao env_keep:
Como alternativa , defina
JAVA_HOME
na raiz~/.bash_profile
.fonte
Execute o sudo com a opção -E (preserve environment) (consulte o arquivo man) ou coloque JAVA_HOME no script install.sh.
fonte