Uma maneira de fazer isso é adicionar JAVA_HOME ao script de inicialização do tomcat, que deve estar em /etc/init.d
Estou instalando o Tomcat em uma máquina RHEL5 e estou tendo problemas para iniciá-lo, porque JAVA_HOME não está configurado. Tomcat está sendo iniciado usando
sudo /sbin/service tomcat start
e é executado sob o usuário tomcat
. Quando eu estou logado como eu ou como usuário root, JAVA_HOME
está definido corretamente (usando /etc/profile.d/java.sh
). Eu estou supondo que isso não está sendo devidamente passado pelo sudo.
Alguém pode me indicar a direção da mudança que preciso fazer para que essa variável seja passada pelo sudo ou escolhida pelo usuário tomcat
? Eu acredito que existem várias maneiras.
Obrigado antecipadamente
Rich
A resposta de mazianni está correta.
Mais informações:
Para um shell não interativo /etc/profile
não é lido e, portanto, /etc/profile.d/*.sh
não são lidos.
JAVA_HOME
está definido no seu shell interativo. sudo
retira a maioria das variáveis de ambiente. Você pode configurar o env_keep
em /etc/sudoers
para permitir JAVA_HOME
, mas se você configurar o tomcat para iniciar automaticamente esse método, ele não funcionará mais. (Portanto, a solução de mazianni é a melhor.)
Experimente sudo -E <your command>
. Isso preserva (a maioria) o ambiente. Veja man sudo
para mais informações.
Você pode definir temporariamente uma variável antes da execução no BASH. Isso estará disponível para o comando imediatamente após.
JAVA_HOME=/path/to/java sudo /sbin/service tomcat start
Leia man sudoers
.
Usando visudo
(nunca edite /etc/sudoers
diretamente!), você pode optar por definir !env_reset
para permitir globalmente que as variáveis de ambiente (a maioria) passem por sudo
, ou adicione a env_keep
quais variáveis específicas devem ser mantidas.