如何设置 systemd 中以单引号开头的环境值

如何设置 systemd 中以单引号开头的环境值

我尝试在 systemd 的服务文件中设置以下内容

Environment=SETTINGS=\'{"a"=1}\'

但似乎两个单引号都被删除了,所以我得到 {“a”=1} 作为环境变量 SETTINGS 的值

我该如何正确设置?

答案1

这对我有用:

$ cat /run/user/1000/systemd/user/envtest3.service
[Service]
Environment=SETTINGS=\'{"a"=1}\'
Environment=SETTINGS2='{"a"=1}'

Type=oneshot
ExecStart=/bin/env

然后

$ systemctl --user start envtest3.service
$ journalctl --user -n 2
-- Logs begin at wto 2014-05-27 15:33:38 EDT, end at sob 2014-10-04 11:44:13 EDT. --
paź 04 11:44:13 fedora21 env[27607]: SETTINGS='{"a"=1}'
paź 04 11:44:13 fedora21 env[27607]: SETTINGS2='{"a"=1}'

如您所见,变量已正确设置。

您还可以在单​​元本身中使用这些变量:

...
ExecStart=/bin/echo ${SETTINGS} ${SETTINGS2}
ExecStart=/bin/echo $SETTINGS $SETTINGS2

这里还有一件令人惊奇的事情:

paź 04 14:27:50 fedora21-amd64 echo[30304]: '{"a"=1}' '{"a"=1}'
paź 04 14:27:50 fedora21-amd64 echo[30306]: {"a"=1} {"a"=1}

带括号的扩展不会删除引号,但另一个会删除引号。我不确定这是否是一个错误。手册页上说“在空格处拆分”。

编辑:我正在运行最新的 git (v216-456-gba58907547)。

相关内容