执行脚本source 和 . 和sh 的区别是什么

Posted betterquan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了执行脚本source 和 . 和sh 的区别是什么相关的知识,希望对你有一定的参考价值。

"source""."的功能是一样的,可以调用脚本,并将脚本里的函数也传递到当前的脚本或者解释器中,即不会开启新的bash而是在当前bash中运行。
"sh"后面跟脚本名称,则不会将该脚本的函数传递进来,即需要开启新的bash,"sh"实际上是执行一个脚本,最后执行完毕会将内存释放掉,不会保存变量。
而".""source"则不会新的bash进程,这就是为什么在/etc/init.d/这个目录下有很多的脚本都会用"."去调用脚本。
综上所述:
生产环境中编写脚本一般会使用sh命令去执行脚本,因为使用sh命令执行的脚本执行完毕后会自动释放内存并不会影响当前进程中的变量。除非你明确直到想要脚本中的变量要在当前bash中生效(比如重新读取配置文件)则可以使用"source"或者"."

 

以上是关于执行脚本source 和 . 和sh 的区别是什么的主要内容,如果未能解决你的问题,请参考以下文章

shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用

shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用

执行shell脚本三种方法的区别:(sh、exec、source)

Linux下sh/bash/source/.命令的区别(转)

exec和source的简单区别

bash . source ./ 区别