Acho que seu problema se deve ao espaço no conteúdo da variável de ambiente. Observando os exemplos dos documentos do systemd , uma atribuição deve ser uma única sequência:
Exemplo:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
Isto irá executar / bin / echo com quatro argumentos: one
, two
, two
, e two 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 que está sendo chamado duas vezes, a primeira vez com argumentos
'one'
, 'two two' too
,
, e pela segunda vez com argumentos
one
, two two
, too
.
Testei isso com o seguinte serviço (observe as aspas em 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 obteve 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
Obviamente, seria mais simples de usar EnvironmentFile
. Substituir pelo Environment
seguinte deu o mesmo resultado desejado:
EnvironmentFile=/tmp/foo
Onde /tmp/foo
contido (observe a falta de aspas):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTS
nosystemd
ambiente o Apachetomcat
7.0.61), usarEnvironmentFile
realmente é o caminho a percorrer. Obrigado!/etc/default
. Os arquivos foram historicamente usados para colocar variáveis de ambiente para os scripts init correspondentes./etc/environment
não é processado por um shell; além da atribuição simples de variável, sua sintaxe é muito diferente da sintaxe systemd observada acima ou da sintaxe geral do shell.