Penso che il tuo problema sia dovuto allo spazio nel contenuto della variabile d'ambiente. Guardando gli esempi dai documenti systemd , un'assegnazione dovrebbe essere una singola stringa:
Esempio:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
Questo eseguirà / bin / echo con quattro argomenti: one, two, two, e two two.
Esempio:
Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE
Questo comporta echo essere chiamato due volte, la prima volta con argomenti
'one', 'two two' too, , e la seconda volta con argomenti
one, two two, too.
Ho provato questo con il seguente servizio (notare le virgolette intorno all'intero incarico):
[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 ottenuto l'output desiderato in 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
Certo, sarebbe invece più semplice da usare EnvironmentFile. Sostituendo il Environmentcon quanto segue si ottiene lo stesso risultato desiderato:
EnvironmentFile=/tmp/foo
Dove /tmp/foocontenuto (notare la mancanza di virgolette):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTSinsystemdambiente per Apachetomcat7.0.61) usareEnvironmentFiledavvero è la strada da percorrere. Grazie!