Myślę, że twój problem wynika z miejsca w treści zmiennej środowiskowej. Patrząc na przykłady z systemowych dokumentów , przypisanie powinno być pojedynczym ciągiem znaków:
Przykład:
Environment="ONE=one" 'TWO=two two'
ExecStart=/bin/echo $ONE $TWO ${TWO}
To będzie wykonywał / bin / echo z czterema argumentami: one
, two
, two
, i two two
.
Przykład:
Environment=ONE='one' "TWO='two two' too" THREE=
ExecStart=/bin/echo ${ONE} ${TWO} ${THREE}
ExecStart=/bin/echo $ONE $TWO $THREE
To powoduje echo miano dwukrotnie, po raz pierwszy z argumentów
'one'
, 'two two' too
,
, i po raz drugi z argumentów
one
, two two
, too
.
Przetestowałem to za pomocą następującej usługi (zwróć uwagę na cytaty wokół całego zadania):
[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
I uzyskałem pożądaną moc wyjściową w 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
Oczywiście łatwiej byłoby użyć EnvironmentFile
zamiast tego. Zastąpienie Environment
poniższym dało ten sam pożądany rezultat:
EnvironmentFile=/tmp/foo
Jeśli jest /tmp/foo
zawarty (zauważ brak cytatów):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
CATALINA_OPTS
wsystemd
środowisku Apachetomcat
7.0.61) za pomocąEnvironmentFile
naprawdę jest do zrobienia. Dzięki!/etc/default
. Pliki tam były historycznie używane do umieszczania zmiennych środowiskowych dla odpowiednich skryptów inicjujących./etc/environment
nie jest przetwarzane przez powłokę; poza prostym przypisywaniem zmiennych, jego składnia bardzo różni się od składni systemowej wymienionej powyżej lub ogólnej składni powłoki.