首页 > 解决方案 > 有什么作用。在bash中是什么意思?

问题描述

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

运行时./a_script,它将在当前目录中查找脚本。只有在授予执行权限时才会运行它。

运行.a_script时它将搜索隐藏的脚本文件,$PATH如果找到则运行。

运行a_script时它将在其中搜索脚本$PATH并在找到时运行。

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

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

. a_script运行它是一个不同的外壳?

我可能错了。任何人都可以解释这个问题吗?

我提到的链接: https ://ss64.com/bash/source.html

标签: bashshell

解决方案


运行时./a_script,它将在当前目录中查找脚本。只有在授予执行权限时才会运行它。

运行.a_script时它将搜索隐藏的脚本文件,$PATH如果找到则运行。

运行a_script时它将在其中搜索脚本$PATH并在找到时运行。

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

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

a_scriptand.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


推荐阅读