我尝试在 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)。