为什么需要 ./ 来运行可运行文件?

为什么需要 ./ 来运行可运行文件?

我正在使用 ubuntu,我注意到除非我在主题前面加上 ,否则我的许多可运行脚本都无法运行./

例如,如果我有一个 perl 脚本:/home/me/script.pl并且我当前在/home/me,则输入script.pl不会执行此操作,但./script.pl会。

这是为什么?

答案1

要执行脚本,您需要输入脚本的完整路径除非脚本位于$PATH环境变量中列出的目录之一中。通常(默认情况下).(当前目录)不是在你的 中$PATH,因此你需要输入./script来执行它。

答案2

因为当前目录不在您的路径中。这是一项安全功能。如果它在您的路径中,则有人可能会删除常用命令的恶意副本,当您在该目录中时,例如,您将运行假的 sudo,而不是运行真正的 sudo。那将是一件坏事。

答案3

echo $PATH

为了使其正常工作,您的路径中必须包含当前目录(一个点)。

如果您愿意,可以使用以下命令将其添加到您的路径中。

sh/bash: export PATH=$PATH:.

tcsh/csh: set PATH = ($PATH .)

答案4

shell 在路径中搜索可执行文件,默认情况下./它不在路径中。

相关内容