如何获取普通用户名作为变量

如何获取普通用户名作为变量

我正在尝试创建一个 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

相关内容