最近,我不得不在.bashrc中更新我的JAVA环境变量。
echo $JAVA_HOME #打印出/usr/java/.
echo $( JAVA_HOME ) #引发错误“找不到JAVA_HOME命令”
我担心使用$(JAVA_HOME)的make文件在$JAVA_HOME被识别后就不能工作,而不是$(JAVA_HOME)
如何使$(JAVA_HOME)与当前设置的$JAVA_HOME相等?还有,为什么会发生这种事?
谢谢
发布于 2010-08-19 21:38:21
make不是bash
他们对变量的处理方式不同。$foo是在bash中读取名为foo的变量的方式,$(foo)是在makefile中读取变量的方式。
发布于 2010-08-20 00:31:59
更确切地说:
JAVA_HOME是一个shell变量;假设它是用export导出的,那么环境variable.$JAVA_HOME就是展开shell变量JAVA_HOME.bash的bash语法,$(command)替换了command的输出-因此$(JAVA_HOME)试图运行一个名为JAVA_HOME的命令,因此您得到了错误。当make启动时,它会查看每个环境变量,并将同名的make变量设置为相同的值。(请参见.)$(JAVA_HOME)是展开名为JAVA_HOME.的make变量的make语法。
因此,您的Makefile应该工作得很好:$(JAVA_HOME)扩展了make变量JAVA_HOME,该变量被设置为环境变量JAVA_HOME的值(除非Makefile有意地覆盖它),它具有正确的值。
发布于 2010-08-20 05:02:23
Q:那么我的make文件会读取环境变量吗?如果我在$JAVA_HOME中定义了.bashrc,我的make文件会正确读取$(JAVA_HOME)吗?
答:是的,绝对是:)
https://stackoverflow.com/questions/3526443
复制相似问题