为什么在执行某些脚本之前需要一个“./”?

为什么在执行某些脚本之前需要一个“./”?

例如,我已经安装了 java 并且可以运行,java ...但是如果我创建一个 shell 脚本,我必须运行./script.sh

这是为什么?这./代表什么?

答案1

当可执行文件不在 PATH 中时,您需要明确指定路径。./是一个“相对”路径说明符:“从这里开始(.)不再往下走”(/)。如果将当前目录添加到 PATH 环境变量并发出rehash命令,则将不再需要它。

答案2

当您运行命令时,shell 会搜索PATH变量(或某个哈希表,具体取决于 shell #)以查找可执行文件。但通常不包括当前工作目录 ( .)。因此,您需要通过添加前缀来告诉 shell 在哪里找到您的脚本,./如 Floris 所述。

该默认设置的目的是,避免您意外执行名为 eg 的脚本(在当前目录中),rm而不是预期的命令/bin。这对于 root 来说尤其重要,因为本地脚本的行为可能与您预期的完全不同!


#我写了更多关于哈希表的内容这个答案

答案3

当前目录通常不在 PATH 中,因此命令默认不会从当前目录中查找

答案4

java在你的$PATH变量中,所以这就是它被发现和执行的原因。./告诉命令行使用当前目录中的文件,而该文件通常不在 PATH 上。

相关内容