Ambiente do Systemd: verifique a existência da variável

1

O systemd permite esse Environment em um arquivo de serviço?

Environment=abc=${abc:-'notABC?'}

significando definir abc como abc if abc , se não definido abc to notABC?

O systemd pode fazer isso?

    
por Tuyen Pham 02.11.2018 / 12:14

1 resposta

2

Não, isso não é possível em arquivos unitários do systemd, ele suporta apenas uma expansão mínima de variáveis e não tem como objetivo implementar a substituição de variáveis semelhantes a shell.

Se você precisar de algo parecido com o que descreve, a recomendação seria colocar sua inicialização em um shell script e usar esse script em ExecStart= . Nesse caso, você terá todos os recursos de um shell disponíveis para definir o ambiente variáveis antes de executar o programa principal do serviço.

Se você usar um script de shell em ExecStart= , certifique-se de usar exec para iniciar o programa principal no final do script, para que o shell fique fora do caminho e o systemd esteja monitorando diretamente seu comando.

Se quiser evitar a necessidade de criar e manter um arquivo externo adicional, você poderá inserir o script de shell no arquivo de unidade, mas, nesse caso, lembre-se de chamar o shell explicitamente (com sh -c ou equivalente para outro shell) e que você precisa escapar do $ (usando dois deles) para evitar que o systemd tente interpretá-lo. Então você precisa de algo como:

ExecStart=/bin/sh -c 'abc=$${abc:-"notABC?"}; exec mycmd "$abc"'
    
por 02.11.2018 / 12:50