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

来源:互联网 发布:无法解析域名错误码137 编辑:程序博客网 时间:2024/06/05 00:38

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

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

实验结果:



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

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

1 0
原创粉丝点击