运行 .sh 脚本时权限被拒绝

运行 .sh 脚本时权限被拒绝
./geany_run_script.sh: 5: ./geany_run_script.sh: ./Area_circumference: Permission denied

program exited with code: 126。当我尝试执行我的代码时,总是会出现此问题。有什么解决办法吗?

答案1

这是一个解释更改文件权限(和所有权)

如果您想跳过这些(当然是现在),您可以在用户主目录中创建一个目录/文件夹并C在那里处理您的程序(或其他程序)。


您可以打开终端(按Ctrl+ Alt+ T)并cd转到目标目录:

cd /path/to/target

授予文件“the_file_name”执行权限(如果文件系统允许您拥有 RW 权限):

chmod +x the_file_name

答案2

您需要授予executeread权限。请按照以下步骤操作:

chmod u+r+x filename.sh

./filename.sh

当我们创建一个新的脚本文件时,默认情况下它具有读写权限。但如果我们想执行它们,那么我们应该给予执行权限,如上所示。

对于 shell 脚本来说,仅有执行位是不够的,还必须能够读取文件才能执行它(与只需要执行权限位的二进制文件相反)

答案3

或者,如果您不想更改权限,您可以直接使用您的 shell(或其他 shell 版本)执行它。

$ bash filename.sh

答案4

对于我们其他人来说,问题在于不是由于未设置执行位而导致的,@Avinash-Raj 说得最好:

Permission denied仅当您没有足够的权限访问该文件时才会发生错误。

就我而言,是 root 缺少访问基于保险丝的挂载或挂载 fs 的权限设置为noexec.. 它实际上归结为运行脚本的任何人都缺少访问或运行脚本所需的权限。

为了确认这一点,使用findmnt --target <filepath>

TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw,nosuid,nodev,noexec,size=1024k,inode64
                                    #^^^^^^         

我在这里为我的保险丝用户留下这个明显/简单的答案,谷歌绝对会拒绝向他们提出除了设置执行位之外的任何其他解决方案。

相关内容