getenv()Linux/Ubuntu返回NULL

ary*_*ard 4 c unix linux ubuntu-12.04

我正在尝试使用用户主目录getenv("$HOME"),但它返回NULL.我究竟做错了什么?

int main(void)
{
    char * path;
    path = getenv("$HOME");
    printf ("The current path is: %s",path);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Geo*_*edy 6

保留$关闭环境变量名称.在shell中使用时,$它不是名称的一部分,但是向shell发出变量名称后面的信号,它应该替换它的值.


Dig*_*oss 4

getenv("PATH"); // This is what you really want
Run Code Online (Sandbox Code Playgroud)

并且,可选地,编译-Wall并最终得到类似的结果。(已测试...)

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  char *path;
  path = getenv("PATH");
  if(path)
    printf("The current path is: %s\n", path);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果OP想要HOME,为什么要告诉OP读出PATH? (4认同)