【发布时间】:2015-02-04 22:06:26
【问题描述】:
我需要运行一个调用 shell 脚本的 Make 脚本。
我可以直接以 root 身份运行 shell 脚本,但是在 makefile 上运行 make 时(仍以 root 身份),make 被拒绝运行相同的 shell 脚本?
Makefile 中有问题的那一行是:
PLATFORM=$(shell $(ROOT)/systype.sh)
我可以进入并硬编码系统上每个 Makefile 脚本的每个 PLATFORM 变量的值,但这将是没有意义的修复,我想了解为什么会出现 Permission Denied 错误:
make[1]: execvp: ../systype.sh: Permission denied
PS:即使 shell 脚本只包含 ls 或 echo linux,shell 脚本的内容也不是问题,Make 实用程序运行 shell 脚本的权限被拒绝。
PS:我不是make专家,所以如果解释与Make有关,请尽可能具体。
【问题讨论】:
-
如何手动运行?
/path/to/systype.sh?bash /path/to/systype.sh?如果是后者,那么问题很可能是可执行权限。 -
脚本是否设置了执行标志 (
chmod 755 systype.sh)?有shebang线吗? -
当我手动运行它时,我使用 .脚本名.sh
-
scriptname.sh 将在没有 x 权限的情况下执行,因为它是一个 shell 脚本(我尝试了两种方式来清除这种可能性)
-
我的默认 shell 是 bash,您可以从 /etc/passwd root:x:0:0:root:/root:/bin/bash lvignals:x:1000:1000:lvignals 中看到, ,:/home/lvignals:/bin/bash