通过C程序更改环境变量

时间:2012-07-29 14:31:00

标签: c variables posix environment

任何人都知道如何通过C程序更改Linux环境变量?我不想更改为执行该程序而复制的环境变量。我希望能够从C程序更改其值,然后在linux中执行命令'env'时,我可以看到它的值发生了变化。

任何提示?

2 个答案:

答案 0 :(得分:3)

  

我不想更改复制的环境变量   该计划的执行。我希望能够改变它的价值   从C程序开始,然后在linux中执行命令'env'时   可以看到它的价值发生了变化

你做不到。 您只能更改自己流程的环境。你无法触及父母的环境。换句话说,您所做的任何事情(设置/清除环境变量,更改本地目录等)对于父进程都是不可见的。

该标准明确指出:

  

setenv()函数应更新或添加变量   调用过程的环境

改变父母环境的唯一方法就是亲自去做。

答案 1 :(得分:2)

请参阅POSIX函数setenvputenv

setenv http://pubs.opengroup.org/onlinepubs/009604599/functions/setenv.html

putenv http://pubs.opengroup.org/onlinepubs/009604599/functions/putenv.html

正如POSIX所说 setenv()函数优于此函数。 (运行putenv)

  

我不想更改为执行该程序而复制的环境变量。

正如@cnicutar在他的回答中所做的那样,您只能更改当前流程的环境变量,而不能更改其父流程或其他流程。