这里是temp/Makefile
:
all:
echo $$PWD
echo $(CURDIR)
perl -e 'print $$ENV{"PWD"}'
现在
$make -C temp
make: Entering directory `/home/mgaleck/temp'
/home/mgaleck/temp
/home/mgaleck/temp
/home/mgaleck
make: Leaving directory `/home/mgaleck/temp'
为什么没有temp
的第三个值?
根据制作手册,-C
选项导致首先“更改目录”(工作目录?)。
Python也发生了同样的事情。
答案 0 :(得分:3)
因为PWD
环境变量不保存当前的工作目录;无论当前工作目录是sh
上次设置的时间,它都会保存 。除了启动外壳程序或执行内置cd
的外壳程序(或具有pushd
的类似内置程序的外壳程序)外,对外壳程序PWD
并没有任何影响在PWD
上,除了外壳程序之外的任何地方,可能都是一个愚蠢的想法。改用getcwd
(C),Cwd::getcwd
(Perl),os.getcwd
(Python)等。