исходные файлы переменных env внутри Makefile - PullRequest
0 голосов
/ 01 февраля 2019

так что с моей локальной машины я могу сделать это:

 . env_vars.env

, и она отлично работает:

cat env_vars.env

#!/bin/bash
export abce=def

но когда я пытаюсь отразить то же самое в makefile, он ничего не возвращает:

SHELL=/bin/bash

print-env-vars:
        . env_vars.env
        echo ${abce}

Я также попытался с исходным кодом env_vars.env внутри makefile, но вывод остался прежним.Хотите знать, как я могу получить переменные внутри make-файла.

1 Ответ

0 голосов
/ 01 февраля 2019

Каждая строка рецепта 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.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...