我读过其他所有标题相同的文章,但我不在嵌入式系统上,我的includes和环境变量设置正确。在RHEL7.5上运行时,我的getenv程序不起作用,所以我创建了一个C应用程序,它具有打印JAVA_HOME环境变量的简单功能。它从C程序返回空值,但环境变量已被设置(已被永久设置),并且在我的putty终端中读取结果良好。这正是我正在运行的(只是路径缩短了):
C:

#include <stdio.h>
#include <stdlib.h>

int main () {
   printf("JAVA HOME : %s\n", getenv("JAVA_HOME"));

   return(0);
}

生成文件:
CC=gcc
CFLAGS=-c -Wall -I/path/to/includes
BIN=/path/to/bin

INCLUDE=/path/to/includes

default : $(BIN)/testEnv


testEnv.o : testEnv.c
    $(CC) $(CFLAGS) testEnv.c

#------------ Make testEnv-------------------
$(BIN)/testEnv: testEnv.o
    $(CC) -o $@  \
    testEnv.o

终端:
>bin/testEnv
JAVA HOME : (null)
>echo $JAVA_HOME
/path/to/java

有没有人有什么新的我应该检查或知道问题可能是什么?谢谢。

最佳答案

您的JAVA_HOME变量可能是shell变量,而不是导出的。在从此shell启动应用程序之前,请确保导出它:

export JAVA_HOME

关于c - 尽管终端回显有效,C程序getenv()返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58507895/

10-11 15:31