我习惯于使用例如运行shell脚本
source script.sh
最近我惊讶地发现这也适用于
. script.sh
当然,单点通常表示当前目录,所以我现在很困惑。有人能解释一下.的用法吗。?
摘自IBM文档:"。(dot(在当前环境中运行一个shell脚本,然后返回。通常,shell在子shell中运行命令文件,因此cd、set和trap等命令对环境的更改是命令文件的本地更改。这个(dot(命令规避了此功能。
如果文件名中有斜杠,则。(点(查找命名文件。如果没有斜线。(点(在PATH变量中指定的目录中搜索文件。当一些人使用dot在工作目录中运行文件时,这可能会让他们感到惊讶,但他们的搜索规则并不是为了查看工作目录而设置的。因此,shell找不到shell文件">
.
(点(和source
在bash
语言中的含义相同。
事实上,(点(形式是根据POSIX外壳规范的标准形式。source
形式是bash
的扩展,但不是bash
的发明。(历史悠久的伯克利C外壳(csh
(过去使用source
而不是.
。(
根据POSIX Shell规范,source
是一个未指定含义的命令名;看见https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html