shell脚本的几种不同执行方式的区别实验

shell脚本归结起来有三种执行方式,按执行时是否创建子shell可以分为两类。下面贴出我的测试脚本及测试结果。

[plain]  view plain  copy
  1. #! /bin/bash  
  2. cd   
  3. echo "this shell's pid is $$"  #打印执行脚本进程的pid  
  4.   
  5. #执行shell脚本方式可以分为两类:  
  6. #a. 创建一个子shell, 即一个新的进程,然后在里面执行脚本。  
  7. #   ./shell.sh  
  8. #   shell-absolute-path/shell.sh #这两种方式,要求执行用户有执行权限。  
  9. #   bash shell.sh  
  10. #   sh  shell.sh    #这两种方式可以在用户对shell.sh没有执行权限时执行。  
  11. #b. 不创建子shell,直接在当前shell中执行脚本:  
  12. #   . shell.sh    #前面是点号。  
  13. #   source shell.sh #这两种方式,是否让你想起了什么,对,当我们修改了.bashrc,要让他马上生效时,采用的就是这种执行方式。  
  14. #  分别用以上方式执行该脚本,你会发现区别的  

实验结果:



可以看到采用.和source执行脚本shell的pid和当前环境shell的pid一样,不会创建子shell,而且脚本中的cd命令如同实在当前shell中执行的一样,可以改变当前shell的上下文环境。

而除此外的其它执行方式就没有以上特点了,从他们执行时shel的pid和当前shell是不一样的,因此cd命令的效果没有看到,因为它只是改变了执行它的那个子shell的上下文环境,对当前shell无影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值