在C中设置环境变量

时间:2013-02-25 01:51:34

标签: c

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

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

我正在尝试使用echo $ PATH将其打印出来,它仍然显示前一条路径,因为它没有更改。

3 个答案:

答案 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)的环境