Пробовали ли вы export
директиву для Make себя (при условии, что вы используете GNU Make)?
export PATH := bin:$(PATH)
test all:
x
Также в вашем примере есть ошибка:
test all:
PATH=bin:${PATH}
@echo $(PATH)
x
Во-первых, значение echo
ed является расширением переменной PATH
, выполняемой Make, а не оболочкой. Если он печатает ожидаемое значение, то, я думаю, вы установили переменную PATH
где-то ранее в вашем Makefile или в оболочке, которая вызвала Make. Чтобы предотвратить такое поведение, вам следует избегать долларов:
test all:
PATH=bin:$$PATH
@echo $$PATH
x
Во-вторых, в любом случае это не сработает, потому что Make выполняет каждую строку рецепта в отдельной оболочке . Это можно изменить, написав рецепт в одну строку:
test all:
export PATH=bin:$$PATH; echo $$PATH; x