【发布时间】:2012-07-29 14:30:59
【问题描述】:
任何人都知道如何通过 C 程序更改 Linux 环境变量?我不想更改为执行该程序而复制的环境变量。我希望能够从 C 程序中更改它的值,然后在 linux 中执行命令“env”时,我可以看到它的值发生了变化。
有什么建议吗?
【问题讨论】:
标签: c variables posix environment
任何人都知道如何通过 C 程序更改 Linux 环境变量?我不想更改为执行该程序而复制的环境变量。我希望能够从 C 程序中更改它的值,然后在 linux 中执行命令“env”时,我可以看到它的值发生了变化。
有什么建议吗?
【问题讨论】:
标签: c variables posix environment
我不想更改复制的环境变量 该程序的执行。我希望能够改变它的价值 从 C 程序,然后在 linux 中执行命令“env”时,我 可以看到它的值改变了
你不能。 您只能更改自己流程的环境。你永远无法接触到父母的环境。换句话说,您所做的任何事情(设置/清除环境变量、更改本地目录等)对于父进程都是不可见的。
标准明确规定:
setenv() 函数应更新或添加一个变量 调用进程的环境。
改变父母环境的唯一方法是让它自己去做。
【讨论】:
system("export VAR=value"); 怎么样?
system 正在使用新流程?不确定。
请参阅 POSIX 函数 setenv 和 putenv。
setenvhttp://pubs.opengroup.org/onlinepubs/009604599/functions/setenv.html
putenvhttp://pubs.opengroup.org/onlinepubs/009604599/functions/putenv.html
正如 POSIX 所说 setenv() 函数优于此函数。 (putenv)
我不想更改为执行该程序而复制的环境变量。
正如@cnicutar 在他的回答中所说,您只能更改当前进程的环境变量,而不能更改其父进程或其他进程的环境变量。
【讨论】: