-2

我正在尝试在 C 程序中更改我的 $PATH 。在这段代码之后,当我打印我的 PATH 变量时,它保持不变。这是我的方法,

    char path[100]="PATH=";
    char *input = "/newfolder/hello/";
    putenv(strcat(path, input));

我正在尝试使用 echo $PATH 将其打印回来,它仍然显示以前的路径,因为它没有改变。

4

3 回答 3

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 进程中执行和评估,这个进程仍然具有初始环境变量设置值。

于 2013-02-25T02:00:13.007 回答
3

当您启动一个进程时,它会获得其父环境的副本。您正在更改副本,该副本会在程序结束时消失。

于 2013-02-25T01:54:05.903 回答
2

putenv()只会改变正在运行的进程的环境。它不能改变调用进程(shell)的环境

于 2013-02-25T01:54:33.217 回答