我以超级用户(即 root 用户)身份在 arm 目标板上运行脚本。但如果我使用以下语法运行该脚本,则不会执行
root@freescale$ ./Script.sh
-sh: ./Script.sh: Permission denied
我已经使用 chmod 命令授予了读取和执行权限 (+rx)。执行“ls -l”命令时,我获得以下属性
root@freescale$ ls -l | grep Script.sh
-rw-rw-rw- 1 root root 362 Jul 2 08:47 Script.sh
文件属性列中没有“x”,而 chmod 命令执行成功。另一方面,当我以以下方式运行此脚本时,它会运行
root@freescale$ sh Script.sh
有人能帮我回答这种情况吗?
答案1
即使您的“chmod”返回成功,执行位实际上并没有打开,正如“ls”所示,因此我得出结论,有些东西明显阻止您更改文件系统上的文件模式。
“lsattr Script.sh”显示什么?
您能将脚本放入 RAM 驱动器或同一主机上的其他文件系统并再试一次吗?
答案2
您的脚本没有为任何人设置“执行”权限。请尝试:
chmod u+x Script.sh
并且该文件的所有者应该能够使用 ./Script.sh 启动它
相似地,
chmod g+x Script.sh
chmod o+x Script.sh
如果您希望允许组 (g) 或任何人 (o) 执行它,则可以工作。
答案3
该文件必须是“可执行的”才能使用 来执行./Script.sh
。
用于chmod +x Script.sh
为该文件添加“执行”标志。
编辑
抱歉,我错过了您帖子中的一个重要细节,您已经这样做了,但没有效果……尝试chmod
再次执行,然后立即执行echo $?
以获取退出状态,这可能会有所帮助。