c - 尽管终端回显工作,C 程序 getenv() 返回 null
问题描述
我已经阅读了所有其他具有相同标题的帖子,但我不在嵌入式系统上,并且我的包含和环境变量设置正确。在 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
有没有人有什么新的东西我应该检查或知道问题可能是什么?谢谢。
解决方案
您的JAVA_HOME
变量可能是一个 shell 变量,而不是导出的变量。确保在从此 shell 启动您的应用程序之前将其导出:
export JAVA_HOME
推荐阅读
- spring - spring @MockBean HttpSession - 没有可用的“javax.servlet.http.HttpSession”类型的限定bean
- django - OperationalError at / no such table: blog_post_categories
- swift - 我有抛出错误的错误吗?我应该怎么办?
- javascript - 与 addEventListener 绑定
- ios - 组合:如何在不完成原始发布者的情况下替换/捕获错误?
- python - 使用 C 对象指针构建 PyObject*
- ios - 从 UIViewController 显示 UIView 作为上下文菜单预览
- c# - 如何定义聚合的一对多关系
- excel - 在excel中按值范围标准插入/替换表格
- java - Mysql查询根据像素大小选择所有图像