You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile中使用id -u获取UID无效,求助解决方法

解决Makefile中获取用户UID无输出的问题

这个问题我之前踩过坑!核心原因是Makefile里的$符号有特殊作用——它是用来引用Make自身变量的标记,而不是让shell执行命令的语法。

你写的$(id -u),Make会把它当成一个名为id -u的Make变量来解析,但这个变量根本不存在,所以展开后是空字符串,执行自然就没输出了。

给你两种可行的解决方案:

方案1:转义$符号传递给shell

在Makefile里,用两个$来表示一个真正的$,这样shell就能正确解析$(id -u)命令了:

perm-user:
	@echo $$(id -u)

这种方式是让shell在执行目标时才去调用id -u,适合需要每次执行都重新获取UID的场景。

方案2:使用Make的shell函数

Make内置了$(shell ...)函数,可以直接在Make解析阶段执行shell命令并返回结果,然后把结果替换到代码里:

perm-user:
	@echo $(shell id -u)

这种方式会在Make开始处理这个目标前就获取到UID,适合UID不会变化的场景,效率稍高一点。

你可以根据自己的需求选其中一种,两种都能正常输出你的UID~

内容的提问来源于stack exchange,提问作者Nicolas S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:33:07