运行 Shell 脚本的方法

运行 Shell 脚本的方法

我尝试在终端运行此命令以授予执行权限:

chmod +x file.sh

它说无法访问文件。

我该怎么做呢?

答案1

除非脚本要求将其放在特定位置,否则您无需“安装”shell 脚本,只需将其保存在所需位置并运行即可。还建议先通读脚本(通过在 Gedit 等文本编辑器中打开它)以确保脚本是安全的。

运行 Shell 脚本的方法

1. 在特定子 shell 中执行脚本

在这种方法中,您可以指定要运行哪个 shell,以及您希望该 shell 运行的脚本的路径。由于您正在执行 shell,并告诉它要运行哪个文件,因此脚本不需要执行权限,从安全角度来看这很好。您的默认 shell 可能知道您正在运行的 shell 的位置,在这种情况下,您不需要指定 shell 的路径。除非文件/文件夹名称中有空格,否则您不需要将 shell 路径或脚本路径括在引号中。有些 shell 可能不接受文件路径,它们可能需要特定的选项和格式,但想法是一样的。

 "/path/to/shell" "/path/to/script"

例子:

"/bin/sh" "/home/user1/Downloads/script.sh"

bash /home/user1/Downloads/script

2. 在当前 Shell 中执行脚本

在这种方法中,您使用当前正在运行的 shell,以及您希望该 shell 运行的脚本的路径。由于您直接执行脚本,因此脚本需要执行权限。除非文件/文件夹名称中有空格,否则您不需要将脚本路径括在引号中。

chmod u+x,g+x,o+x "/path/to/file.sh"

"./path/to/file.sh"

例子:

chmod u+x "/home/user1/Downloads/script.sh"

 "./home/user1/Downloads/script.sh"

使用此方法时需要注意的事项是,您可能需要限制谁可以运行脚本。“u+x”授予文件所有者运行它的权限,“g+x”授予其所属组的成员运行它的权限,“o+x”授予所有人运行它的权限。只有当脚本与您正在运行的 shell 兼容时,它才会起作用。您只需对脚本执行一次 chmod 操作;以后您可以继续执行第二个命令。只有当您有权编辑该文件时,您才可以对脚本文件执行 chmod 操作。如果您不是脚本文件的所有者,并且没有权限对它执行 chmod 操作,则可以使用 Sudo 来获得提升的权限。

例子:

sudo chmod u+x,g+x,o+x "/home/user1/Downloads/script.sh"

 "./home/user1/Downloads/script.sh"

相关内容