实际上在.sh脚本里通过bash命令创建子shell的时候并不会把环境转变到子shell,也就是说写在脚本里的bash后面的命令不会转移到子shell去执行
而是在脚本所在的shell去执行,这就解释了为什么
!#/bin/shell
bash
echo "1"
exit
bash
echo ”2“
这个脚本不会执行到echo "2",这是因为通过bash test执行上述脚本的时候执行顺序是
1.创建一个子shell,该子shell内容是空的,因为echo "1"是属于bash test的
2.进入空bash的shell,若此时exit退出空shell,又回到bash test的shell,然后执行echo ”1“
3.由于这时环境处在bash test所以exit是通过bash test退出到最外层的shell,所以bash test的后面echo "2"也就不会被执行
随笔2-----.sh里创建子bash
最新推荐文章于 2023-10-09 05:00:00 发布