5

我在将 Makefile 中修改的 PATH 导出到当前终端时遇到了一些麻烦。我正在尝试将 Makefile 目录所在的 bin 文件夹添加到 PATH 中。

这是makefile的相关条带:

PATH := $(shell pwd)/bin:$(PATH)

install:
    mkdir -p ./bin 
    export PATH
    echo $(PATH)

回声正确打印,但如果我在终端中重做回声,PATH 保持不变。

在此先感谢您的帮助。

4

3 回答 3

6

如果您使用的是 GNU make,则需要export将 PATH 变量显式地添加到子进程的环境中:

export PATH := $(shell pwd)/bin:$(PATH)

install:
    mkdir -p ./bin 
    export PATH
    echo $(PATH)
于 2011-04-17T21:43:11.247 回答
1

你试图做的事情是不可能的。Make 正在另一个进程中运行,而不是终端中的 shell。make 过程中对环境的更改不会转移到 shell。

也许你混淆了export声明的效果。export不会将变量的值从 make 过程导出到 shell。相反,export标记变量,以便将它们转移到 make 的任何子进程。据我所知,没有办法改变父进程的环境(你开始 make 的 shell 是 make 进程的父进程)。

也许这个答案将使将变量导出到子进程的概念更加清晰。

于 2011-04-17T22:50:03.473 回答
0

也许你可以依靠用户为你做这件事。注意引用

install_hint:
    @echo "Execute this command at your shell prompt:"
    @echo "export PATH=$(shell pwd)/bin:\$$PATH"
于 2018-06-11T19:38:21.717 回答