source sh执行脚本的区别

时间:2021-11-15 00:13:59

主要有两种方式执行shell脚本

1)source test.bsh

2)sh test.bsh


1)souce执行脚本文件会在父程序中执行,各项动作都会在原本的bash内生效,执行过程不另开进程,脚本文件中设定的变量在当前shell中可以看到;

如下例子:

source sh执行脚本的区别

其中sh文件内容如下:

source sh执行脚本的区别

就是通过read命令从命令行中读取两个字符串firstname和lastname,作为一个完整的人名最后在屏幕上输出。source执行该文本文件时正确输出,source还可以用“.”直接替换

source执行文件可以这样理解:

source sh执行脚本的区别

2)sh执行脚本文件是在当前进程另开子进程来执行脚本命令,脚本文件中设定的变量在当前shell中不能看到。使用这种执行方式时,其实script实在子程序的bash中执行的,当子程序完成之后,子程序内的各项变量或者动作将会结束而不会传回到父程序中。对比第一张图我们可以得到下面的结果:

source sh执行脚本的区别

当sh文件执行完毕之后,子程序bash中的所有数据便被移除。可以这样理解

source sh执行脚本的区别

"./"执行结果和sh执行结果相同。

值得注意的是:一般当我们想要让某些写入~/.bashrc(如环境变量)生效的时候,都需要注销系统,重新开启服务,当我们不注销系统就想要使写入生效的时候,我们就可以使用source ~/.bashrc而不是使用sh ~/.bashrc.