我正在尝试使用 获取用户主目录getenv("$HOME")
,但它返回 NULL。我究竟做错了什么?
int main(void)
{
char * path;
path = getenv("$HOME");
printf ("The current path is: %s",path);
return 0;
}
我正在尝试使用 获取用户主目录getenv("$HOME")
,但它返回 NULL。我究竟做错了什么?
int main(void)
{
char * path;
path = getenv("$HOME");
printf ("The current path is: %s",path);
return 0;
}
离开$
环境变量名称。当在 shell 中使用时,$
它不是名称的一部分,而是向 shell 发出一个变量名的信号,它应该替换它的值。
getenv("PATH"); // This is what you really want
并且,可选地,编译-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;
}
不应该这样getenv("PATH")
吗?
对于主目录,您可以使用
char* homedir = getenv("HOME");
或者你可以使用
char* homedir = NULL;
struct passwd *pw = getpwuid(getuid());
if (pw)
homedir = pw->pw_dir;
按用途PATH
使用execvp
getenv("PATH")
由于 HOME 是一个环境变量,因此您不应在其前面加上 $ 符号。
char *value,name[20];
scanf("%s",name);
value=getenv(name);
if(value == NULL)
printf("Not found");
else
print("value = %s",value);
确保您已包含 unistd.h 和所有相关的头文件。