新手求问关于子shell的问题!

taotaost 2013-02-14 09:08:58

这里圆括号会产生子shell,那父shell中的变量outervar为什么能在圆括号里的子shell中显示出来,我并没有把它设置成环境变量啊?
达人告知,谢谢!!!

另外,我在终端窗口中输入echo $$,得到PID是4084,输入echo $BASH_SUBSHELL,得到0;然后输入bash回车,再输入echo $$,得到4086,输入echo $BASH_SUBSHELL,还是为0。
输入exit命令后,我采用下面的测试命令:
echo $$;echo BASH_SUBSHELL;(echo $$;echo BASH_SUBSHELL;)
分别输出:
4084
0
4084
1
为什么前面是PID不一样,后面是BASH_SUBSHELL不一样?
到底PID是4086的是子shell,还是BASH_SUBSHELL是1的是子shell?
...全文
53 1 点赞 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xinhua0910 2013-02-15
我对小括号的理解就是:子shell和父shell的关系相当于是子进程和父进程,子shell会有调用子shell之前的所有变量(包括自定义变量,所以会知道outervar的值),当子shell结束后,父shell是不会知道子shell的变量的(因此无法知道innervar的值)。 至于第二个问题,有环境再试一下
  • 打赏
  • 举报
回复
相关推荐
发帖
Linux/Unix社区
加入

1.8w+

社区成员

Linux/Unix社区 专题技术讨论区
申请成为版主
帖子事件
创建了帖子
2013-02-14 09:08
社区公告
暂无公告