Каждая строка рецепта make
выполняется отдельной оболочкой, поэтому, даже если вы создадите исходный файл, оболочка, из которой он получен, будет обработана до следующей строки.Это эквивалентно выполнению следующего из вашей оболочки:
bash -c '. env_vars.env'
bash -c 'echo ${abce}'
Поместите обе команды в одну строку (или используйте \
, чтобы разбить одну логическую строку на несколько физических строк), чтобы обе они выполнялись вта же оболочка.Точка с запятой необходима, чтобы оболочка не воспринимала . env_vars.env echo ${abce}
как единственную команду для запуска.
print-env-vars:
. env_vars.env; \
echo $${abce}
(Двойной знак доллара гарантирует, что вы фактически передаете расширение оболочки в оболочку, а неmake
пытается раскрыть переменную make
.)