2017-04-07 116 views
2

在systemd单元文件中,我有一个内容为key=IamValue=abc的环境,因为您可以看到值为IamValue=abc,其中包含=如何编写systemd环境变量值其中包含=

对于这种情况,我该如何编写单元文件?

我曾尝试如下,但它似乎无效:

[Unit] 
Description=... 

[Service] 
WorkingDirectory=... 
ExecStart=... 
Restart=always 
RestartSec=10           
SyslogIdentifier=... 
User=root 
Environment=key="IamValue=abc" 
+1

您可以使用环境文件:http://fedoraproject.org/wiki/Packaging: Systemd#EnvironmentFiles_and_support_for_.2Fetc.2Fsysconfig_files。 –

+0

“但它似乎无效”,你有没有尝试倾倒环境,看看它实际上是什么?报价是否真的在那里? – kay

+0

@Kay你说得对,我在删除引号后正在工作。所以环境分析器只是由第一个'='分割?没有找到文件说这个。 –

回答

4

我测试了一下这个工作在test.service文件:

[Unit] 
Description=Hi 

[Service] 
Type=oneshot 
Environment=key="IamValue=abc" 
ExecStart=/bin/bash -c "/bin/echo key:$key" 

如果您运行的,然后做journalctl -u test,你可以看到包含等号的作品。

我建议使用update to the official systemd docs来更好地说明这种情况。

+1

有趣的是,我昨天浪费了2个小时,因为我写了Environment = DJANGO_SETTINGS_MODULE =“something.settings”,而systemd创建了一个变量DJANGO_SETTINGS_MODULE,其值为“something.settings”,包括双引号...> ___> – RobM

1

或者使用EnvironmentFile,配置行中的单元文件:

EnvironmentFile=-/etc/sysconfig/test 

随着内容/etc/sysconfig/test

key="IamValue=abc"