免费注册 查看新帖 |

Chinaunix

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

怎么理解shell执行命令时是启用了一个新shell?  关闭 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
1 [报告]
发表于 2004-09-11 01:09 |显示全部楼层

怎么理解shell执行命令时是启用了一个新shell?

[quote]原帖由 "compnik"]当前shell直接就fork 出一个二进制文件的进程, 就不用先fork个subshell再exec了,那是浪费资源 [/quote 发表:

這個我也不確定, 但從眾多文件的說明上, 似乎大都說是先 fork 再 exec 再 exit 的...

a=b
/bin/echo $a
理解上, a 是一個 local var, 不會被帶進 child env 中的.
但為何可以看到呢?
嗯... 看過 shell 十三問的朋友, 一定記得我最少強調過兩次如下的觀念了:
---> 在 command line 中的變數替換完成後, 會重組命令行!

因此, /bin/echo $a 在完成替換後, 會被重組為 /bin/echo b ,
然後才 fork & exec ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP