免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1520 | 回复: 8
打印 上一主题 下一主题

[Linux] Makefile解疑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-03-09 14:27 |只看该作者 |倒序浏览
本帖最后由 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 && 除了格式上,又有什么区别呢?

论坛徽章:
0
2 [报告]
发表于 2015-03-09 16:18 |只看该作者
你这, 解什么啊!! 本来就是这样啊!! 说清楚你想问什么?

论坛徽章:
0
3 [报告]
发表于 2015-03-09 16:26 |只看该作者
update 回复 2# fengidri


   

论坛徽章:
0
4 [报告]
发表于 2015-03-09 16:34 |只看该作者
./test1.sh 也是一个子进程

论坛徽章:
0
5 [报告]
发表于 2015-03-09 16:38 |只看该作者
export LD_LIBRARY_PATH=/usr/local/lib1 也是一个子进程啊,那结果为什么不一样。区别在哪回复 4# fengidri


   

论坛徽章:
0
6 [报告]
发表于 2015-03-09 17:02 |只看该作者
./test1.sh && ./test2.sh   这一行是在一个makefile的子进程里, 你明白的吧。  我说的是./test1.sh还在这个子进程的下面的又一个子进程。这样可以明白吧!!

论坛徽章:
0
7 [报告]
发表于 2015-03-09 17:06 |只看该作者
如果是这样,问题已经清楚的解决, (没点拨,还真难懂呢)回复 6# fengidri


   

论坛徽章:
0
8 [报告]
发表于 2015-03-09 17:14 |只看该作者
好了, 解决就好。

论坛徽章:
0
9 [报告]
发表于 2015-03-09 17:19 |只看该作者
你知道我怎么想的吗,我是以一个命令为单位去理解的。应该一行才是一条命令。就是Makefile里的概念command line。有时候就是出发点错了。谢谢你回复 8# fengidri


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP