shell source sh bash与./的区别

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继承的
在这里插入图片描述

发布了75 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhengdong12345/article/details/103902485