在我的工作场所,我们通常使用以下语法在 Linux 服务器中执行脚本:
./<whatever absolute path to script>/<script>
显然,如果使用正确的用户执行并且具有正确的权限,这通常会执行脚本。
现在我不知道服务器最近发生了什么变化,SA 管理升级、补丁和修复,通常根本不提供任何通知。问题是,最近如果我们尝试使用相同的语法执行脚本,它们将由于“找不到脚本”而无法运行。
我们的解决方法是使用以下有效的语法:
bash /<whatever absolute path to script>/<script>
我不是 SA 或 unix 服务器配置方面的专家,所以有人知道为什么会发生这种情况以及如何修复它吗?
提前致谢。
答案1
正如您在示例中提到的绝对路径,您应该使用命令
/<whatever absolute path to script>/<script>
w/oa 点,因为在您的情况下意味着搜索相对路径(点是当前目录)。仅当当前目录是/
(root)时,使用点才有效
还要检查权限和执行标志。 Sor 脚本您也需要设置读取权限。
答案2
ls -l
您可以通过在脚本所在的目录中运行来确定您的脚本是否“可执行” 。第一列的输出显示所有者、组或其他人的“linux 权限”。
您将看到“x”,表示可执行位已设置。
-rwxr-xr-x
本示例中有三个,因此文件的所有者、拥有组中的任何人以及其他任何人都可以执行该文件。我发现这个关于权限位的博客条目:https://www.linuxfoundation.org/blog/blog/classic-sysadmin-understanding-linux-file-permissions。
答案3
- 确保您的脚本可执行:
chmod +x <name of the script>
PATH
如果您想从任何地方执行它,请将其放置在您的位置。要找到您的路径,请运行:echo $PATH