Como posso definir o valor do ambiente que é iniciado a partir de uma aspa simples no systemd

3

Eu tentei definir o seguinte no arquivo de serviço do meu systemd

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

Mas parece que ambas as aspas simples foram removidas, por isso recebo {"a" = 1} como o valor para a variável de ambiente SETTINGS

Como posso definir isso corretamente?

    
por waitingkuo 06.08.2014 / 06:53

1 resposta

1

Isso funciona para mim:

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

Type=oneshot
ExecStart=/bin/env

então

$ 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}'

Como você pode ver, as variáveis são definidas corretamente.

Você também pode usar essas variáveis na própria unidade:

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

e há coisas surpreendentes aqui:

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}

A expansão com chaves não tira as aspas, mas a outra faz. Não tenho certeza se isso é um bug ou não. A manpage diz "dividida em espaço em branco".

Edit: Estou executando o último git (v216-456-gba58907547).

    
por 04.10.2014 / 20:33