为什么有些服务器需要“./”来运行脚本,而其他服务器不需要?

为什么有些服务器需要“./”来运行脚本,而其他服务器不需要?

我想知道为什么有些 Ubuntu 服务器有所不同。

我有两台 Ubuntu 12.04 服务器,它们正在运行一个 Web 应用程序。今天我尝试从其文件夹中运行一个 sh 文件。服务器 1 可以在没有 ./ 的情况下运行 shell,但服务器 2 需要它。两者都有 777 权限。

答案1

通常,当前文件夹中的脚本/程序不会在 linux/unix 上执行。

仅当在变量中找到脚本/程序时才会执行脚本/程序$PATH

因此,当路径未包含在变量中时,$PATH您必须提供脚本/程序的路径才能运行它。要在当前文件夹中执行脚本/程序,您必须在其前面加上./表示当前文件夹的符号。

请检查$PATH两台服务器上的变量是否相同。

根据您对$PATH变量的评论,我怀疑其中一个脚本位于变量找到的文件夹中$PATH,而另一个脚本位于另一个文件夹中。

注意力

./将其包含在您的 中是个坏主意$PATH。这样,用户就可以创建一个恶意命令(例如ls)并引导您进入他保存该命令的文件夹。然后您将执行本地版本而不是系统命令(如果当前文件夹位于$PATH之前/bin)。

相关内容