Makefile解疑
本帖最后由 nichelnich 于 2015-03-09 16:26 编辑有三个文件
-----test1.sh
#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/lib1
-----test2.sh
#!/bin/sh
echo $LD_LIBRARY_PATH
-----Makefile
.PHONY : all
all:
./test1.sh && ./test2.sh
export LD_LIBRARY_PATH=/usr/local/lib1 && ./test2.sh
-----------make结果:
./test1.sh && ./test2.sh
/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib1 && ./test2.sh
/usr/local/lib1
-----------------问题:
Makefile的第一行和第二行的结果为什么不同呢?make在运行shell命令的时候会创建子进程,子进程设置的环境变量是不会对父进程有影响的。既然都是创建子进程运行,那么./test1.sh && 和 export LD_LIBRARY_PATH=/usr/local/lib1 && 除了格式上,又有什么区别呢? 你这, 解什么啊!! 本来就是这样啊!! 说清楚你想问什么? update 回复 2# fengidri
./test1.sh 也是一个子进程 export LD_LIBRARY_PATH=/usr/local/lib1 也是一个子进程啊,那结果为什么不一样。区别在哪回复 4# fengidri
./test1.sh && ./test2.sh 这一行是在一个makefile的子进程里, 你明白的吧。我说的是./test1.sh还在这个子进程的下面的又一个子进程。这样可以明白吧!! 如果是这样,问题已经清楚的解决,:victory: (没点拨,还真难懂呢)回复 6# fengidri
好了, 解决就好。 你知道我怎么想的吗,我是以一个命令为单位去理解的。应该一行才是一条命令。就是Makefile里的概念command line。有时候就是出发点错了。谢谢你回复 8# fengidri
页:
[1]