Добавление каталога в PATH через Makefile
У меня возникли проблемы с экспортом ПУТИ, который я изменил внутри Makefile, в текущий Терминал. Я пытаюсь добавить в PATH папку bin внутри каталога Makefile.
Вот соответствующая полоса make-файла:
PATH := $(shell pwd)/bin:$(PATH)
install:
mkdir -p ./bin
export PATH
echo $(PATH)
Эхо печатает его правильно, но если я повторю эхо в терминале, PATH останется прежним.
Заранее спасибо за помощь.
3 ответа
Если вы используете GNU make, вам нужно явно export
переменная PATH в среду для подпроцессов:
export PATH := $(shell pwd)/bin:$(PATH)
install:
mkdir -p ./bin
export PATH
echo $(PATH)
То, что вы пытаетесь сделать, невозможно. Make работает в другом процессе, чем оболочка в вашем терминале. Изменения среды в процессе make не переносятся в оболочку.
Возможно, вы путаете эффект export
заявление. export
не экспортирует значения переменных из процесса make в оболочку. Вместо, export
помечает переменные, чтобы они передавались любым дочерним процессам make. Насколько я знаю, нет способа изменить среду родительского процесса (оболочка, в которой вы начали make, является родительским процессом процесса make).
Возможно, эти ответы сделают концепцию экспорта переменных в дочерние процессы несколько понятнее.
Возможно, вы можете положиться на пользователя, который сделает это за вас. Обратите внимание на цитирование
install_hint:
@echo "Execute this command at your shell prompt:"
@echo "export PATH=$(shell pwd)/bin:\$$PATH"