Infelizmente, esse arquivo que você tem é, na verdade, um script de shell. No passado, a maioria dos sistemas / scripts de init interpretavam arquivos que fornecem variáveis de ambiente usando o shell, para que você pudesse fazer coisas de shell neles. No entanto, o Systemd não faz isso. O arquivo de ambiente é realmente um arquivo de ambiente, não um script. Isso está documentado na página systemd.exec
man :
Variable expansion is not performed inside the strings, however, specifier expansion is possible. The $ character has no special meaning.
Portanto, você tem duas opções.
-
Expanda todas as variáveis manualmente. Significado use
CATALINA_BASE=/d01/tomcat/prod/xyz/1
. -
Avalie o arquivo com o shell:
ExecStart=/bin/bash -ac '. /path/to/env_file; exec /path/to/program'