getenv函数没有返回预期的答案

时间:2013-04-10 15:54:57

标签: c++ linux ubuntu environment-variables

我正在尝试访问我的一个environement变量,即JAVA_HOME。 为此,我使用getenv()函数,如下所示:

#include <iostream>
#include <string.h>

int main() {
    const char* env = getenv("JAVA_HOME");
    if(env != NULL)
        std::cout << "Environnement : " << env << std::endl;
    else
        std::cout << "NULL" << std::endl;
    return 0;
}

我尝试了std::getenv("PATH");,它返回了与我的/etc/bash.bashrc变量不同的文件JAVA_HOME

我希望std::getenv("JAVA_HOME")能够返回我在/etc/bash.bashrc文件中的内容。现在它返回了不同的东西。

如何获得正确的environement变量?我做错了什么?

我在Ubuntu 12.04下使用GCC 4.7.2使用C ++ 11和QtCreator

编辑:代码

  • 包括[...]是包含

  • 的简写
  • 添加了NULL处理

编辑:进展

  • 我尝试了extern char **environ,但它不包含我需要的一个变量......

编辑:部分解决方案

我发现没有办法轻易做到这些事情。 我在IDE中设置了个人环境变量来克服这个问题。

1 个答案:

答案 0 :(得分:1)

您的代码很好,除了您应该显式处理来自getenv()的NULL返回值。

问题几乎可以肯定是您运行代码的方式。如果你:

  1. 启动一个shell;
  2. 确保在该shell中正确设置$JAVA_HOME(通过bashrc或其他任何方式);
  3. 从shell运行可执行文件;
  4. 我打赌它会正常工作。