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