( echo $var ) 中的 $var 是在 sub shell 中展开的还是在当前 shell 中展开的?

( echo $var ) 中的 $var 是在 sub shell 中展开的还是在当前 shell 中展开的?

讨论一下      
实际上, dearvoid 说的当前shell也已经是一个sub shell了

回到shell的工作方式
我们运行一个虚拟终端或控制台
就有了一个shell, 且称为P
当输入一个命令时
P生一个sub shell, 并以exec的方式运行这个命令(除了显示使用exec运行)

不过我们可以简单地忽略这点

回到主题来
我觉得应该是在sub shell中才展开
因为没有使用export var却可以打印出$var...

      
引用:
我觉得应该是在sub shell中才展开
因为没有使用export var却可以打印出$var...
怎么感觉这个因果关系反了呢?

      
正常情况下
变量需要export才可以被sub shell继承呀

我的意思是
在sub shell中
$var 才被 expans为其值
如果在“当前”已经被expans了
那在sub shell中应该是看不见这个值的      
引用:
原帖由 li-jiahuan 于 2007-8-16 14:37 发表
正常情况下变量需要export才可以被sub shell继承呀
当前 shell 没有 export, sub shell 怎么能够看到 var 呢?      
那得看sub shell怎么实现
如果把代码原原本本地放到sub里运行
不也可以看见吗?      
复制内容到剪贴板
代码:
[dearvoid@LinuxEden:tty3 ~/tmp] # echo $PWD
/root/tmp
[dearvoid@LinuxEden:tty3 ~/tmp] # ( cd /; echo $PWD )
/
[dearvoid@LinuxEden:tty3 ~/tmp] # o
      
PWD这种变量是每个shell(interactive ?)都有的变量