我想知道为什么有些 Ubuntu 服务器有所不同。
我有两台 Ubuntu 12.04 服务器,它们正在运行一个 Web 应用程序。今天我尝试从其文件夹中运行一个 sh 文件。服务器 1 可以在没有 ./ 的情况下运行 shell,但服务器 2 需要它。两者都有 777 权限。
答案1
通常,当前文件夹中的脚本/程序不会在 linux/unix 上执行。
仅当在变量中找到脚本/程序时才会执行脚本/程序$PATH
。
因此,当路径未包含在变量中时,$PATH
您必须提供脚本/程序的路径才能运行它。要在当前文件夹中执行脚本/程序,您必须在其前面加上./
表示当前文件夹的符号。
请检查$PATH
两台服务器上的变量是否相同。
根据您对$PATH
变量的评论,我怀疑其中一个脚本位于变量找到的文件夹中$PATH
,而另一个脚本位于另一个文件夹中。
注意力
./
将其包含在您的 中是个坏主意$PATH
。这样,用户就可以创建一个恶意命令(例如ls
)并引导您进入他保存该命令的文件夹。然后您将执行本地版本而不是系统命令(如果当前文件夹位于$PATH
之前/bin
)。