shell脚本的几种不同执行方式的区别实验
日期: 2016-08-03 分类: 个人收藏 281次阅读
shell脚本归结起来有三种执行方式,按执行时是否创建子shell可以分为两类。下面贴出我的测试脚本及测试结果。
#! /bin/bash
cd
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无影响。
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐