Je souhaite spécifier une directive Environment
systemd
contenant =
, par exemple.
Environment=CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/Apache-Tomcat-current -Dappserver.base=/var/lib/archiva/Apache-Tomcat-current
et obtenez l'erreur
[/lib/systemd/system/archiva.service:10] Invalid environment assignment, ignoring: CATALINA_OPTS=-Dappserver.home\=/var/lib/archiva/Apache
dans journalctl -xe
. J'ai essayé de citer avec "
et '
et d'échapper à =
avec \
sans succès. Cela semble sans papiers.
Je pense que votre problème est dû à l'espace dans le contenu de la variable d'environnement. En regardant les exemples de les docs systemd , une affectation devrait être une chaîne unique:
Exemple:
Environment="ONE=one" 'TWO=two two' ExecStart=/bin/echo $ONE $TWO ${TWO}
Ceci exécutera/bin/echo avec quatre arguments:
one
name__,two
name__,two
ettwo two
.Exemple:
Environment=ONE='one' "TWO='two two' too" THREE= ExecStart=/bin/echo ${ONE} ${TWO} ${THREE} ExecStart=/bin/echo $ONE $TWO $THREE
Ainsi, echo est appelé deux fois, la première fois avec les arguments
'one'
,'two two' too
et la deuxième fois avec les argumentsone
name__,two two
,too
name__.
J'ai testé cela avec le service suivant (notez les guillemets tout au long de la mission):
[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
Et obtenu le résultat souhaité dans journalctl
name__:
Apr 26 08:19:29 laptop echo[28439]: -Dappserver.home=/var/lib/archiva/Apache-Tomcat-current -Dappserver.base=/var/lib/archiva/Apache-Tomcat-current
Bien entendu, il serait plus simple d'utiliser plutôt EnvironmentFile
name__. Remplacer Environment
par ce qui suit a donné le même résultat souhaité:
EnvironmentFile=/tmp/foo
Où /tmp/foo
était contenu (notez le manque de guillemets):
CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/Apache-Tomcat-current -Dappserver.base=/var/lib/archiva/Apache-Tomcat-current