- 论坛徽章:
- 0
|
原帖由 Edengundam 于 2006-11-20 12:19 发表
我没有明白您的意思, 我猜你想问我上面这个的结果...为什么why, why2两个人都没有export, 但 why 可以在 ()中访问, why2却不可以????
呵,我故意说得有点含糊,因为再说就把答案说出来了 ^-^
如果set像其他命令那样fork subshell的话那么while所fork的current shell的所有未export的变量都将无法被set所fork的subshell获得(因为这里不像刚才讲得那样,由于变量替换先于subshell的fork而导致变量被提前取出来了),对么?所以我才有一问,为什么set能取得while所fork的这个current shell的所有未export的变量呢?
呵,其实,答案很简单,前面曾经说过,外部命令会fork subshell,而built-in command(内建命令)或者function(函数)都不会fork subshell,它们都是在current shell执行的。而set,恰好正是built-in command(内建命令)。
试验下
^_____^
[ 本帖最后由 一梦如是 于 2006-11-20 18:09 编辑 ] |
|