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.