通过Makefile将目录添加到PATH

时间:2011-04-17 20:54:11

标签: unix path makefile directory pwd

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

这是makefile的相关条带:

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

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

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

提前感谢您的帮助。

3 个答案:

答案 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"