source、sh/bash、./的区别主要体现在:1、执行方式不同;2、环境变量影响不同;3、权限需求不同;由于source是在当前shell环境下执行脚本,所以脚本中的环境变量会影响到当前shell。而sh/bash和./在子shell中执行脚本,脚本的环境变量不会影响到父shell。
一、执行方式不同
source命令,也可写作“.”,是在当前shell环境下执行命令,不需要新开启一个子shell。而sh/bash和./是新创建一个子shell来执行命令。
二、环境变量影响不同
由于source是在当前shell环境下执行脚本,所以脚本中的环境变量会影响到当前shell。而sh/bash和./在子shell中执行脚本,脚本的环境变量不会影响到父shell。
三、权限需求不同
使用source命令执行脚本时,脚本无需具有执行权限。但使用sh/bash或者./执行脚本时,脚本需要具有执行权限。
延伸阅读
1.source是什么
source是一种Shell命令,它的功能是在当前bash环境下读取并执行文件中的命令。该命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
2.sh/bash是什么
sh和bash都是Unix和Linux系统中的shell,shell是用户与系统进行交互的一种界面。sh是Bourne shell的简称,是早期Unix系统的默认shell;bash则是Bourne Again Shell的简称,是sh的扩展,提供了许多额外的功能,比如命令行编辑等。
3../是什么
在Unix和Linux系统中,”./”是一种常用的执行可执行文件或脚本的方式。”.”代表当前目录,”/”是目录分隔符,因此”./”后接文件名表示执行当前目录下的文件。但注意,要用”./”执行文件,文件必须具有执行权限。