Makefile 巴什:PWD和CURDIR有什么区别? 我的问题
我使用Makefile运行Makefile 巴什:PWD和CURDIR有什么区别? 我的问题,makefile,pwd,working-directory,Makefile,Pwd,Working Directory,我使用Makefile运行docker run目标,该目标需要当前工作目录作为其参数之一 我使用$(PWD)或$(CURDIR): build:Dockerfile 码头工人跑。。。 它们似乎产生了相同的价值。我不知道是否有细微的差别会影响我,所以我想知道它们的确切定义 我试过什么 STFW manmake 我的问题 生成文件中的$(PWD)和$(CURDIR)之间有什么区别;DR 使用CURDIR 为什么? 首先,谢谢你的支持 CURDIR 引述: CURDIR 设置为当前工作目录的绝对
docker run
目标,该目标需要当前工作目录作为其参数之一
我使用$(PWD)
或$(CURDIR)
:
build:Dockerfile
码头工人跑。。。
它们似乎产生了相同的价值。我不知道是否有细微的差别会影响我,所以我想知道它们的确切定义
我试过什么
- STFW
manmake
$(PWD)
和$(CURDIR)
之间有什么区别;DR
使用CURDIR
为什么?
首先,谢谢你的支持
CURDIR
引述:
CURDIR
设置为当前工作目录的绝对路径名
为了方便起见,当GNU make启动时(在它处理了任何-C选项之后),它将变量CURDIR设置为当前工作目录的路径名。make不会再触及该值:特别注意,如果包含来自其他目录的文件,CURDIR的值不会更改。该值与在makefile中设置的值具有相同的优先级(默认情况下,环境变量CURDIR不会覆盖该值)。请注意,设置此变量不会影响make的操作(例如,它不会导致make更改其工作目录)
PWD
制造手册中未提及PWD
。快速的env | grep PWD
发现它是由环境设置的(在我的例子中是zsh)。GNU关于国家的说明:
PWD
Posix 1003.1-2001要求cd和pwd必须更新pwd环境变量以指向当前目录的逻辑名称,但传统Shell不支持这一点。如果一个shell实例维护PWD,但另一个子shell和不同的shell不知道PWD并执行cd,这可能会导致混淆;在这种情况下,PWD指向错误的目录。使用“pwd”而不是“/code>$pwd”
由于CURDIR
保证在Make
中工作,因此PWD
可能是从shell继承的,因此前者应该是首选。如果您使用的是GNU Make,您可能应该:1。查看并搜索CURDIR
make变量。2. PWD
不是内置的make变量。它来自环境,被传递到make,就像它是make变量一样。所以,看看shell手册中的定义(例如,manbash
)。太棒了<代码>CURDIR
它是。不知道我怎么会错过gmake链接。写下来作为答案,我很乐意接受。这不是一个真正的答案,只是链接到哪里可以找到答案。如果你愿意,可以通过总结你的发现来回答你自己。很高兴,值得称赞。变量的来源可以通过$(origin…
:cat Makefile和&make$(info CURDIR来自$(origin CURDIR))$(info PWD来自$(origin PWD))CURDIR来自文件PWD来自环境
build: Dockerfile
docker run ... <$(PWD) or $(CURDIR)>