我无法运行我的 Bash 脚本,执行权限总是被拒绝。
我使用命令修改了我的文件,例如:
chmod u+x bash_script1.sh
并得到以下结果:
-rwxr--r-- 1 user group 1947 Jun 18 16:04 bash_script1.sh
-rwxr--r-- 1 user group 2430 Jun 18 15:59 bash_script2.sh
-rw-r--r-- 1 user group 1 Jun 18 10:57 runs.txt
但是,从命令行运行时仍然出现以下错误:
命令:
./bash_script1.sh
错误:
-sh: ./bash_script1.sh: Permission denied
当我运行下面的命令时,我没有收到错误,但我不想使用 bash 来运行我的脚本:
bash bash_script1.sh
#!/usr/bin/env bash
放在我的标题下。
答案1
从 的输出中我们可以看到findmnt -T .
,存储脚本的文件系统使用 选项挂载noexec
。这可以防止脚本(以及二进制可执行文件)直接执行,而bash bash_script1.sh
仍然有效,因为bash
可执行文件存储在其他地方,只需要读剧本。
要暂时修改行为,您可以使用以下mount
命令:
sudo mount -o remount,exec /home
为了使更改持久,您需要修改文件/etc/fstab
并删除noexec
此块设备的挂载选项。