我在将Makefile中修改的PATH导出到当前终端时遇到了一些麻烦。 我正在尝试添加到PATH,即Makefile目录所在的bin文件夹。
这是makefile的相关条带:
PATH := $(shell pwd)/bin:$(PATH)
install:
mkdir -p ./bin
export PATH
echo $(PATH)
echo正确打印但是如果我重做终端中的回声,则PATH保持不变。
提前感谢您的帮助。
答案 0 :(得分:5)
如果您正在使用GNU make,则需要将PATH变量显式export
到子进程的环境中:
export PATH := $(shell pwd)/bin:$(PATH)
install:
mkdir -p ./bin
export PATH
echo $(PATH)
答案 1 :(得分:1)
你想做的事是不可能的。 Make在另一个进程中运行,而不是终端中的shell。 make过程中对环境的更改不会转移到shell。
也许你会混淆export
声明的效果。 export
不会将变量值从make进程导出到shell。相反,export
标记变量,因此它们将被转移到make的任何子进程。据我所知,没有办法改变父进程的环境(你开始make的shell是make进程的父进程)。
或许this答案会使导出变量到子进程的概念更加清晰。
答案 2 :(得分:0)
也许你可以依靠用户为你做这件事。注意引用
install_hint:
@echo "Execute this command at your shell prompt:"
@echo "export PATH=$(shell pwd)/bin:\$$PATH"