发新话题
打印

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

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

讨论一下      
'
梅须逊雪三分白 雪却输梅一段香

TOP

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

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

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

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

[ 本帖最后由 li-jiahuan 于 2007-8-16 13:50 编辑 ]      
面包会有的 女人也会有的
_______________________

TOP

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

[ 本帖最后由 dearvoid 于 2007-8-16 14:04 编辑 ]      
'
梅须逊雪三分白 雪却输梅一段香

TOP

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

我的意思是
在sub shell中
$var 才被 expans为其值
如果在“当前”已经被expans了
那在sub shell中应该是看不见这个值的      
面包会有的 女人也会有的
_______________________

TOP

引用:
原帖由 li-jiahuan 于 2007-8-16 14:37 发表
正常情况下变量需要export才可以被sub shell继承呀
当前 shell 没有 export, sub shell 怎么能够看到 var 呢?      
'
梅须逊雪三分白 雪却输梅一段香

TOP

那得看sub shell怎么实现
如果把代码原原本本地放到sub里运行
不也可以看见吗?      
面包会有的 女人也会有的
_______________________

TOP

复制内容到剪贴板
代码:
[dearvoid@LinuxEden:tty3 ~/tmp] # echo $PWD
/root/tmp
[dearvoid@LinuxEden:tty3 ~/tmp] # ( cd /; echo $PWD )
/
[dearvoid@LinuxEden:tty3 ~/tmp] # o
      
'
梅须逊雪三分白 雪却输梅一段香

TOP

PWD这种变量是每个shell(interactive ?)都有的变量      
面包会有的 女人也会有的
_______________________

TOP

发新话题