source的使用
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"
注:该命令通常用命令“.”来替代。
source .bash_profile
. .bash_profile
两者等效
source通常用来生效刚刚修改的文件
sh与bash的使用
sh FileName
bash FileName
作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"
注:两者在执行文件时的不同,是分别用自己的shell来跑文件。
./的使用
作用:打开一个子shell来读取并执行FileName中命令。
注:运行一个shell脚本时会启动另一个命令解释器.
注:需要加权限才可以执行。
source sh bash 与./的区别
如下例子中,展示source 、sh、bash与./的区别:
结论一:脚本加上执行权限后,./.sh, sh ./.sh与bash ./*.sh相同,此三种执行脚本的方式都是重新启动一个子shell,在子shell中执行此脚本。
结论二: source *.sh和. *.sh的执行方式是等价的,即两种执行方式都是在当前shell进程中执行此脚本,而不是重新启动一个shell 而在子shell进程中执行此脚本。
验证依据:没有被export导出的变量(即非环境变量)是不能被子shell继承的