【问题标题】:C program getenv() returns null despite terminal echo working尽管终端回显工作,C 程序 getenv() 返回 null
【发布时间】:2019-10-22 15:43:17
【问题描述】:

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

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

【问题讨论】:

    标签: c linux rhel getenv


    【解决方案1】:

    您的JAVA_HOME 变量可能是一个shell 变量,而不是导出的。在从这个 shell 启动您的应用程序之前,请务必将其导出:

    export JAVA_HOME
    

    【讨论】:

      猜你喜欢
      • 2019-03-30
      • 1970-01-01
      • 2015-12-09
      • 2012-03-18
      • 2017-01-08
      • 2015-03-18
      • 2020-07-25
      • 1970-01-01
      • 2021-06-16
      相关资源
      最近更新 更多