我当前正在尝试运行我的makefile,如下所示:
run program:
export CUDA_VISIBLE_DEVICES=1
python ~/program/main.py --setup2
当我尝试运行Permission denied
shell命令时收到export
错误。我认为原因是因为我当前正在使用实验室的服务器来运行该程序,通常只有指定的少数几个服务器的许多功能才被授予权限。
但是,每当我“手动”运行此命令(即在终端中自己键入makefile的两行)时,它就可以正常运行。
我也查看了How to use shell commands in Makefile和shell 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)"
,但是我得到了相同的结果权限错误。
是否有解决该问题的方法,还是必须与服务器管理员联系?谢谢。
答案 0 :(得分:0)
make
导出和shell
导出之间可能会有一些混淆。
在规则之外,“出口”是指令,用于操纵制造环境-通常在子制造之间进行通信的上下文中。
将其放在规则中(之后),它将由其自己的子外壳执行,这将是一个无操作(下一行的python命令不与env上的导出共享env)第一行)。考虑将规则更改为:
run program:
<TAB> CUDA_VISIBLE_DEVICES=1 python ~/program/main.py --setup2
出于好奇,为什么在这里使用两个目标(运行,程序)?