在Unix / Linux环境下,当一个文件是`source`-d时会发生什么?

我见过包含如下行的shell脚本:

source someOtherFile 

我知道导致其他文件的内容执行,但source的意义是什么?


后续问题:任何脚本都可以来源,或只有某些types的脚本? 当一个脚本来源时,是否有任何环境variables的副作用(而不是正常执行)?

在脚本上运行命令source将在当前进程的上下文中执行脚本。 这意味着脚本设置的环境variables在运行完成后仍然可用。 这与正常运行脚本相反,在这种情况下,一旦脚本退出,在新生成的进程中设置的环境variables将会丢失。

您可以获取任何可运行的shell脚本。 最终的效果将与您在terminal中input脚本中的命令一样。 例如,如果脚本改变了目录,当它完成运行时,你的当前工作目录将会改变。

如果你告诉shell(例如bash)读取文件并执行文件中的命令,则称为sourcing。 重点是,当前进程(shell)是这样做的,而不是一个新的subprocess。

在BASH中,您可以使用source命令或简单地使用. 来源文件。

source是一个Unix命令,用于评估命令后面的文件,作为在当前上下文中执行的命令列表。 你也可以使用. 采购文件。

 source my-script.sh; . my-script.sh; 

两个命令都会有相同的效果。

相反,将脚本文件名传递到所需的shell将在子shell中运行脚本,而不是当前上下文。