子shell环境变量

单刀直入。什么情况下, Shell 环境的所有变量都会被复制到子 Shell 环境?谢谢高手指点!

阅读 4.5k
2 个回答
cat a.sh
echo $var

aaa=5
./a.sh

export aaa=5
./a.sh
5

设置了+x属性后直接执行脚本就是在当前SHELL下起的子SHELL, 能不能继承父SHELL中的变量, 取决于那个变量是否以export声明了.

cat b.sh
echo $bbb

bbb=5
source b.sh
5

顺便多提一句, source执行脚本, 并不是起了子SHELL, 观感上更像是在当前SHELL中的命令串接.

通常是这样,子shell会继承所有父shell的变量(可以直接引用)。父shell的变量包括所有export导出的环境变量和当前环境下设置的变量(形如var=value的命令)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进