我没有关注运行 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 标志。