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
我已经阅读了所有其他同标题的帖子,但我不是在嵌入式系统上,而且我的包含和环境变量设置正确。 运行 在 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