C 程序 getenv() returns null 尽管终端 echo 工作

C program getenv() returns null despite terminal echo working

我已经阅读了所有其他同标题的帖子,但我不是在嵌入式系统上,而且我的包含和环境变量设置正确。 运行 在 RHEL 7.5 上,我的 getenv 程序无法运行,因此我创建了一个 C 应用程序,它具有打印 JAVA_HOME 环境变量的简单功能。它在 C 程序中为 returns null,但环境变量已设置(已永久设置)并且在我的 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