我正在尝试在 C 程序中更改我的 $PATH 。在这段代码之后,当我打印我的 PATH 变量时,它保持不变。这是我的方法,
char path[100]="PATH=";
char *input = "/newfolder/hello/";
putenv(strcat(path, input));
我正在尝试使用 echo $PATH 将其打印回来,它仍然显示以前的路径,因为它没有改变。
我正在尝试在 C 程序中更改我的 $PATH 。在这段代码之后,当我打印我的 PATH 变量时,它保持不变。这是我的方法,
char path[100]="PATH=";
char *input = "/newfolder/hello/";
putenv(strcat(path, input));
我正在尝试使用 echo $PATH 将其打印回来,它仍然显示以前的路径,因为它没有改变。
请告诉我设置后获取环境变量的方式。我有以下 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 进程中执行和评估,这个进程仍然具有初始环境变量设置值。
当您启动一个进程时,它会获得其父环境的副本。您正在更改副本,该副本会在程序结束时消失。
putenv()
只会改变正在运行的进程的环境。它不能改变调用进程(shell)的环境