Eu acho que o seu problema é devido ao espaço no conteúdo da variável de ambiente. Analisando os exemplos dos documentos do systemd , uma tarefa deve ser uma única string:
Exemplo:
Environment="ONE=one" 'TWO=two two' ExecStart=/bin/echo $ONE $TWO ${TWO}
Isso executará / bin / echo com quatro argumentos:
one
,two
,two
, etwo two
.Exemplo:
Environment=ONE='one' "TWO='two two' too" THREE= ExecStart=/bin/echo ${ONE} ${TWO} ${THREE} ExecStart=/bin/echo $ONE $TWO $THREE
Isso resulta em eco sendo chamado duas vezes, a primeira vez com argumentos
'one'
,'two two' too
,e a segunda vez com argumentos
one
,two two
,too
.
Eu testei isso com o seguinte serviço (observe as aspas ao redor de toda a tarefa):
[Unit]
Description=My Daemon
[Service]
Environment='CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current'
ExecStart=/bin/echo ${CATALINA_OPTS}
[Install]
WantedBy=multi-user.target
E obtive a saída desejada em journalctl
:
Apr 26 08:19:29 laptop echo[28439]: -Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
Claro, seria mais simples usar EnvironmentFile
. Substituir Environment
pelo seguinte deu o mesmo resultado desejado:
EnvironmentFile=/tmp/foo
Onde /tmp/foo
contido (observe a falta de citações):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current