我正在尝试在C程序中更改$ PATH。在此代码之后,当我打印PATH变量时,它保持不变。这是我的方法,
char path[100]="PATH=";
char *input = "/newfolder/hello/";
putenv(strcat(path, input));
我正在尝试使用echo $ PATH将其打印出来,它仍然显示前一条路径,因为它没有更改。
答案 0 :(得分:6)
请在设置后告诉我获取环境变量的方式。 我按预期为我提供了以下C代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char path[100]="PATH=";
char *input = "/newfolder/hello/";
putenv(strcat(path, input));
char* pPath;
pPath = getenv("PATH");
printf("%s", pPath);
return 0;
}
输出为:/newfolder/hello/
我正在尝试使用echo $ PATH将其打印出来,它仍然显示前一条路径,因为它没有更改。
你在程序中使用的是:
system("echo $PATH");
然后你就不会得到你设置的值,因为这个命令将从你的shell进程执行和评估,它仍然具有初始的环境变量设置值。
答案 1 :(得分:2)
当您启动流程时,它会获取其父级环境的副本。您正在更改副本,该程序在程序结束时消失。
答案 2 :(得分:2)
putenv()
只会更改正在运行的进程的环境。它无法改变调用进程(shell)的环境