【发布时间】:2020-03-11 02:03:58
【问题描述】:
我目前正在尝试运行我的 makefile,如下所示:
run program:
export CUDA_VISIBLE_DEVICES=1
python ~/program/main.py --setup2
当我尝试运行export shell 命令时收到Permission denied 错误。我假设原因是因为我目前正在使用实验室的服务器来运行该程序,并且通常只有指定的少数人被授予对服务器的许多功能的权限。
但是,每当我“手动”运行此命令(即我自己在终端中输入 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)" 但我得到了相同的权限错误。
有什么办法可以解决这个问题,还是我必须与服务器管理员交谈?谢谢。
【问题讨论】:
-
Make 的
export指令和 shellexport命令不是一回事。但这里的主要问题是权限错误。我很惊讶这个错误甚至存在,而且我不知道足够的系统管理来理解它为什么会发生。我建议您在命令行中尝试echo $SHELL; whoami,在makefile 规则中尝试echo $$SHELL; whoami,以排除一些问题。另外,您使用的是哪个版本的 Make? (您可以通过make -v查看。) -
我的make版本是
4.1,当我按照你的建议运行文件时,我得到了输出/bin/bash \ user。输出与我在终端中运行echo命令时的输出相同。 -
使用'make -d run'获取调试信息。另外,你能分享命令行和完整的日志文件吗?
-
我认为您对错误发生的位置做出了无效的假设:
export不是命令,也不会导致permission denied错误。您能否提供一个产生错误的完整示例以及确切输出,以及您从该示例中看到的错误?
标签: makefile