【Ubuntu】source filename .(点)filename ./filename sh filename的区别

以你之姓@ 2023-09-23 17:57 227阅读 0赞

在shell中source filename 和 . filename是一样的,但source和 ./filename.sh的执行结果有很大区别,借用一张网上的图。如下
在这里插入图片描述
可以看到通过./filename.sh执行shell脚本,脚本内执行的命令和设置的环境变量不影响执行shell脚本的shell环境变量,而使用source filename则会影响到执行source filename的shell的环境变量。

区别

以下是三种执行文件的方法比较

source命令用法:

  1. source filename

作用: 在当前bash环境下读取并执行filename中的命令。该filename文件可以无执行权限”

注:该命令通常用命令“.”来替代。

如:source .bash_profile 和 . .bash_profile两者等效。
source(或点)命令通常用于重新执行刚修改的初始化文档。
source命令(从 C Shell 而来)是bash shell的内置命令。
点命令,就是个点符号,(从Bourne Shell而来)。

sh和bash命令用法:

  1. sh filename bash filename

作用: 打开新的子shell,读取并执行filename中的命令。该filename文件可以无“执行权限”

注:两者在执行文件时的不同,是分别用自己的shell来跑文件。

sh使用“-n”选项进行shell脚本的语法检查,使用“-x”选项实现
shell脚本逐条语句的跟踪,可以巧妙地利用shell的内置变量增强
“-x”选项的输出信息等。

./的命令用法:

  1. ./filename

作用:

打开一个子shell来读取并执行FileName中命令。

注:运行一个shell脚本时会启动另一个命令解释器.

发表评论

表情:
评论列表 (有 0 条评论,227人围观)

还没有评论,来说两句吧...

相关阅读