0

我没有关注运行 gmake 时环境变量 $NLSPATH 值是如何被清除/重置的。在我的 bash shell 中,如果我发出 echo $NLSPATH,我会看到预期的 /usr/lib/nls/msg/%L/%N: (etc)。

然后我创建一个像这样的 Makefile:

all:
    echo $$NLSPATH
    echo $$PATH

运行 gmake all 给了我

echo $NLSPATH

echo $PATH
/usr/bin:/etc:(etc as expected)

我也尝试了 -e ,结果相同;

gmake -e all
echo $NLSPATH

echo $PATH
/usr/bin:/etc:(etc as expected)

我查看了 /etc/environment 和 /etc/.profile 并且 $NLSPATH 在那里设置正确。

此外,如果我运行标准 AIX make,NLSPATH 会按预期显示。所以这似乎是 gmake 和/或它调用当前 shell 的方式。

有人可以建议我应该在哪里寻找吗?[编辑] 因为我是新手,所以我不能马上回答......终于找到了它 - 以下技术说明将其描述为(尽管简短)作为安全限制;

http://www-01.ibm.com/support/docview.wss?uid=swg21516415

发行;

cd /opt/freeware/bin 
sudo chmod -s make

为我解决了这个问题,尽管我想知道 gmake 的某些方面可能会在以后期待 setuid 标志。

4

1 回答 1

0

AIX 上的 IIRC GNU make 需要 setgid 标志才能启用该-l标志,因为在此操作系统上,您无法以普通用户的身份检索系统的平均负载(不知道为什么这被认为安全问题而不是任何需要检查平均负载的程序是 setgid,但是......没有人问我)。

只要你-l在运行 GNU make 时不使用,就不会出现任何问题。

于 2013-06-13T11:52:10.727 回答