Назад | Перейти на главную страницу

Как я могу установить значение среды, которое начинается с одинарной кавычки в systemd

Я попытался установить следующее в моем служебном файле systemd

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

Но кажется, что обе одинарные кавычки удалены, поэтому я получаю {"a" = 1} в качестве значения для переменной окружения SETTINGS.

Как я могу это правильно установить?

Это работает для меня:

$ 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).