exportar variáveis de env do arquivo em um makefile

1

Estou tentando escrever uma tarefa que exportará todas as variáveis do meu arquivo .env, que deve ficar assim:

A=1
B=2

Se eu digitar no terminal:

set -a
. ./.env
set +a

funciona perfeitamente.

Mas a mesma tarefa no Makefile não funciona:

export.env:
    set -a
    . ./.env
    set +a


make export.env # done
printenv | grep A # nothing!

Eu preciso que esses vars persistam após a conclusão da tarefa.

    
por whitered 14.06.2018 / 20:19

2 respostas

5

Como qualquer processo, make não pode modificar o ambiente de um processo existente , ele só pode controlar o ambiente que é passado para os processos iniciados. Tão curto de encher o buffer de entrada, não há como fazer o que você está tentando fazer.

Além disso, make processa cada linha de comando em um shell diferente, portanto, as linhas set -a , . ./.env e set +a são executadas em shells separadas. Os efeitos de . ./.env só serão vistos no shell que executa esse comando.

    
por 14.06.2018 / 20:27
-3

As implementações modernas de make incluem suporte para o gerenciamento do ambiente.

O GNU make, meu smake , e minha versão aprimorada de SunPro Make , que está disponível no schilytools tarball, o suporta.

Se você escrever cuidadosamente seu arquivo env para ter atribuições e export declarações em linhas diferentes, você pode include o arquivo env no seu Makefile .

Use, por exemplo:

include $(HOME)/.env

no seu Makefile .

    
por 14.06.2018 / 20:36