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

  1. source命令用法:
    source filename
    作用:

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

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

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

  2. sh和bash命令用法:
    sh filename bash filename
    作用:

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

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

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

  3. ./的命令用法:
    ./filename
    作用:

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

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

Logo

更多推荐