如何在Makefile.am中检查根用户

如何在Makefile.am中检查根用户,makefile,Makefile,我想开一张支票 if user is root then directorypath = /set/path/to/this/dir else directorypath = /set/path/to/that/dir/instead 在我的Makefile.am中,我不确定使用什么语法来实现这一点,也不确定是否需要在configure.ac中执行某些操作来使条件生效。谁能给我指出正确的方向吗?找到了 在configure.ac中: AM_CONDITIONAL(USER, test

我想开一张支票

if user is root then
  directorypath = /set/path/to/this/dir
else
  directorypath = /set/path/to/that/dir/instead
在我的
Makefile.am
中,我不确定使用什么语法来实现这一点,也不确定是否需要在
configure.ac
中执行某些操作来使条件生效。谁能给我指出正确的方向吗?

找到了

configure.ac
中:

 AM_CONDITIONAL(USER, test `whoami` = "root")
Makefile.am
中:

if USER
directorypath = /set/path/to/this/dir
else
directorypath = /set/path/to/that/dir/instead
endif

很简单。

你为什么要这么做?为什么你觉得知道这一点很有用?因为这听起来很像一个例子。也就是说,你已经做出了一些错误或次优的决定,导致你问这个问题,而不是(最好问)原来的问题。(另外,这听起来像是要控制安装路径,通常不应该这样做,因为prefix/DESTDIR就是用来控制安装路径的。)@EtanReisner这是伪代码。我非常确定我想做什么,这需要在我的Makefile.am中完成。如果你不能解决这个问题,那么我想你不是帮助找到这个问题答案的合适人选。在处理
Makefile.am
文件时执行root用户检查可能不是正确的做法。在
make
执行时这样做,至少有机会成为您可能(认为)想要做的事情,但实际上不太可能成为您想要做的事情(除了非常特殊的情况)。即使在这些情况下,它也不太可能成为这一决定的正确机制。我当然不需要尝试帮助你。我相信这是一个配置时间测试,不会在
make
时间改变事情。在配置时间工作?当然这绝对有效。但是,试着以root用户身份运行make(当configure以非root用户身份运行时),或者以root用户身份运行make,看看您得到的是哪条路径。@EtanReisner这是您无理推断出我无法理解的“特殊情况”之一。这是一个子目录Makefile.am,我正在设置的这些特定目录位于makeinstall。然而,没有人需要知道这一点才能回答这个非常直截了当的问题。尽管如此,即使我根本不知道自己在做什么,我也不认为这可以作为你XY言论的借口:除了傲慢、粗鲁和傲慢,向任何寻求帮助的人介绍自己是一种非常积极的方式。我没有说任何关于你理解任何事情的能力的话,我也没有这样介绍自己。是的。我问了一个关于你最终目标的问题,你的回答不是回答我的问题,而是问我是否需要更多的信息。我仍然认为(在配置时)确定要使用的安装路径(将在
make
时使用)既不正确,也是处理此类情况的错误方法。这正是为什么要配置的
--prefix
参数和
DESTDIR
make变量存在的原因。@EtanReisner您不知道我的最终目标或情况是什么,但您仍然坚持这样做,并假定我的方法是错误的。我怀疑你会回答这个问题,即使你知道答案(我也怀疑)。从抵消的角度来看,你一直是狂妄自大、傲慢、粗鲁、咄咄逼人的,而现在你似乎也无法接受你可能在任何(许多)层面上都错了的想法。我想我们必须同意不同意。