什么起作用.bash中的刻薄?(如在".script.sh"中)



我习惯于使用例如运行shell脚本

source script.sh

最近我惊讶地发现这也适用于

. script.sh

当然,单点通常表示当前目录,所以我现在很困惑。有人能解释一下.的用法吗。?

摘自IBM文档:"。(dot(在当前环境中运行一个shell脚本,然后返回。通常,shell在子shell中运行命令文件,因此cd、set和trap等命令对环境的更改是命令文件的本地更改。这个(dot(命令规避了此功能。

如果文件名中有斜杠,则。(点(查找命名文件。如果没有斜线。(点(在PATH变量中指定的目录中搜索文件。当一些人使用dot在工作目录中运行文件时,这可能会让他们感到惊讶,但他们的搜索规则并不是为了查看工作目录而设置的。因此,shell找不到shell文件">

.(点(和sourcebash语言中的含义相同。

事实上,(点(形式是根据POSIX外壳规范的标准形式。source形式是bash的扩展,但不是bash的发明。(历史悠久的伯克利C外壳(csh(过去使用source而不是.。(

根据POSIX Shell规范,source是一个未指定含义的命令名;看见https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html

相关内容

最新更新