我正在尝试创建一个 makefile 脚本,并尝试在特定目录中自动创建多个文件夹。但是,我在尝试实现此操作时遇到了问题:首先,我尝试按照正常路线进行操作:
mkdir ~/Documents/testfolder
但是,它给了我这个错误:
mkdir: cannot create directory '/root/Documents/testfolder': No such file or directory
然后我尝试$USER
通过以下命令使用该变量:
mkdir /home/$USER/Documents/testfolder
但随后它将被注册为/home/root/Documents/...
并导致错误。 Makefile 脚本大多数时候需要以 sudo 身份运行,所以这对我来说是一个很大的问题。有什么帮助吗?
答案1
如果您的 shell 环境有$USER
,那么事情应该可以工作,因为make
导入了所有环境变量。但你需要注意是否$USER
真正反映了当前的用户ID。
然而,在 Makefile 内部,除了 shell 脚本内部之外,还有其他规则。您可以使用以下 makefile 来检查这一点:
all:
echo USER: $(USER)
这应该有效。请注意,make
需要 $(...) 来生成比单个字符长的宏名称。需要括号,因为否则$U
会被扩展。
现在来谈谈你的权限问题。看来您确实使用了类似su
或的程序sudo
来更改用户 ID 而不更改 shell 变量$USER
。
尝试以您喜欢运行的用户身份直接登录make
。