【问题标题】:Makefile that gives permission to my python script?允许我的python脚本的Makefile?
【发布时间】:2013-12-11 01:03:43
【问题描述】:

我有一个名为“myprogram.py”的 python 脚本和一个名为“myprogram”的 shell 脚本来运行它

# "myprogram"

#!/bin/sh
python myprogram.py

我创建了这个 shell 脚本,因为我想像这样运行我的程序:

./myprogram arg1 arg2

但是,当我这样做时,我会收到“权限被拒绝”错误。

我知道我需要输入“chmod 755 myprogram”来授予权限,但我想这样做

在我的 makefile 中,而不是让用户手动输入 chmod。

换句话说,我想要我的 makefile 以便输入

./make

运行“chmod 755 myprogram”

有没有办法做到这一点?我的 makefile 的内容应该是什么?

谢谢

【问题讨论】:

  • 如果您使用附加脚本的唯一原因就是以这种方式运行它,您可能还需要考虑在.py 文件的顶部添加#! /usr/bin/env python,然后简单地运行它作为./myprogram.py(设置x权限后)。

标签: python shell makefile


【解决方案1】:

尝试将这样的内容放入Makefile

all: myprogram
    chmod 755 myprogram

myprogram 注册为all 目标的依赖项。

请注意,第二行应该以硬制表符开头,而不是空格,因为 Makefile 对缩进非常讲究。

关于shell脚本:有两种写法。

python myprogram.py $1 $2

这会将脚本的前两个参数传递给 python 程序。

但是,如果你这样做了

python myprogram.py $@

然后传递给 shell 脚本的所有参数都将传播到 python 程序。

【讨论】:

  • 尝试运行make 而不是./make
  • 嗯.. 出于某种原因,它说“***没有指定目标,也没有找到生成文件。停止。”
  • makefile 的文件名是什么?应该是Makefile
  • 哦,是的,我改了它,但现在它说“缺少长矛”对不起:(
  • 我认为你的问题是缩进。第二行必须以硬制表符开头,而不是空格。
【解决方案2】:

使用 Make 来执行此操作毫无意义。 Make不是为它设计的。您应该自己发出命令chmod 755 myprogram 并就寝。如果您愿意,可以将此命令封装在脚本或别名中,但不能封装在 makefile 中,然后您可以将myprogram 输入到您最喜欢的保留权限的版本控制系统中,这样如果您在其他地方重新创建它,权限是放。 Make不是这样做的方法。

如果你必须这样做(例如老板这样说),那么让all 依赖于myprogram 是不正确的。 myprogram已经存在,allmyprogram的内容变化或修改时间无关。应该是:

all:
    chmod 755 myprogram

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 2019-11-11
    • 2012-08-27
    • 2011-03-15
    相关资源
    最近更新 更多