如果没有权限,如何在Makefile中使用命令?

时间:2019-11-14 23:40:44

标签: makefile

我当前正在尝试运行我的makefile,如下所示:

run program:
        export CUDA_VISIBLE_DEVICES=1
        python ~/program/main.py --setup2

当我尝试运行Permission denied shell命令时收到export错误。我认为原因是因为我当前正在使用实验室的服务器来运行该程序,通常只有指定的少数几个服务器的许多功能才被授予权限。

但是,每当我“手动”运行此命令(即在终端中自己键入makefile的两行)时,它就可以正常运行。

我也查看了How to use shell commands in Makefileshell script run when I am root but I get a permission denied when it is invoked from a Makefile (still as root),并尝试将export CUDA_VISIBLE_DEVICES=1行更改为"$(export CUDA_VISIBLE_DEVICES=1)""$(shell export CUDA_VISIBLE_DEVICES=1)",但是我得到了相同的结果权限错误。

是否有解决该问题的方法,还是必须与服务器管理员联系?谢谢。

1 个答案:

答案 0 :(得分:0)

make导出和shell导出之间可能会有一些混淆。

在规则之外,“出口”是指令,用于操纵制造环境-通常在子制造之间进行通信的上下文中。

将其放在规则中(之后),它将由其自己的子外壳执行,这将是一个无操作(下一行的python命令不与env上的导出共享env)第一行)。考虑将规则更改为:

run program:
<TAB>    CUDA_VISIBLE_DEVICES=1 python ~/program/main.py --setup2

出于好奇,为什么在这里使用两个目标(运行,程序)?