我尝试在终端运行此命令以授予执行权限:
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"