Quando um novo processo é criado, o ambiente é copiado do pai. Portanto, quaisquer variáveis de ambiente que você definir no script antes de iniciar outro processo devem existir.
Alguns programas como su/sudo
fazem alguma filtragem do ambiente dependendo de como são chamados, como medida de segurança. Portanto, seu script de inicialização está chamando su
, que está iniciando $CATALINA_HOME/bin/startup.sh
, o que, na verdade, está acontecendo na inicialização do Tomcast. Algo provavelmente está removendo ou ignorando a variável.
Eu me pergunto por que você está chamando usando su root
dentro de um script de inicialização. Os scripts de inicialização são executados como root por padrão, não deve haver motivo para você precisar se tornar root novamente. Se eu fosse você, deixaria cair o que parece ser uma chamada sem valor para su
.
Apenas para ajudar você a solucionar problemas. Como root, no Linux, quando você tem /proc
montado, pode ver qual é o ambiente atual.
Por exemplo, se o tomcat tiver um ID de processo de 1234, convém dar uma olhada no conteúdo de /proc/1234/environ
. Qualquer coisa que esteja definida deve estar lá.