bash中的。<space> <command />是什么意思?

时间:2018-10-30 06:05:32

标签: bash shell

尝试运行脚本文件时。我看到的是

运行./a_script时,它将在当前目录中查找脚本。仅在具有执行权限的情况下运行。

运行.a_script时,它将在$PATH中搜索隐藏的脚本文件,并在找到后运行。

运行a_script时,它将在$PATH中搜索脚本并运行(如果找到)。

运行. a_script时,即使未授予脚本执行权限,此命令也会搜索并运行脚本。为什么这样?

此外,.a_script./a_script在当前shell中运行命令。

. a_script运行的是不同的外壳程序吗?

我可能是错的。有人可以解释这个问题吗?

我引用的链接: https://ss64.com/bash/source.html

1 个答案:

答案 0 :(得分:3)

  

运行./a_script时,它将在当前目录中查找脚本。仅在具有执行权限的情况下运行。

     

运行.a_script时,它将在$PATH中搜索隐藏的脚本文件,并在找到后运行。

     

运行a_script时,它将在$PATH中搜索脚本并运行(如果找到)。

是的。请注意,在这些情况下,“脚本”不必是实际的shell脚本。任何可执行文件都可以。

此外,.只是此处命令名称的一部分。在./a_script中,它代表当前目录。这适用于任何路径:例如ls /./home/.(与ls /home相同)。

a_script.a_script中,命令名称不包含/,因此执行PATH搜索。 .在这里并不特殊。

  

运行. a_script时,即使未授予脚本执行权限,此命令也会搜索并运行脚本。为什么这样?

因为在这种情况下,命令为.,而a_script只是.命令的参数。 .将搜索给定的文件并在其中执行命令(在当前Shell中)。 a_script不能是通用可执行文件;它必须是一个shell脚本。

  

此外,.a_script./a_script在当前shell中运行命令。

否,如果它们确实是shell脚本,它们将产生一个新的shell来运行它们。

  

. a_script运行的是不同的外壳程序吗?

否,相反:内置的.命令专门从当前shell中的文件运行命令(就像您键入了命令一样)。

.的另一个名称是source,其工作方式相同,但更易于搜索。另请参见https://www.gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins