任何人都知道如何通过C程序更改Linux环境变量?我不想更改为执行该程序而复制的环境变量。我希望能够从C程序更改其值,然后在linux中执行命令'env'时,我可以看到它的值发生了变化。
任何提示?
答案 0 :(得分:3)
我不想更改复制的环境变量 该计划的执行。我希望能够改变它的价值 从C程序开始,然后在linux中执行命令'env'时 可以看到它的价值发生了变化
你做不到。 您只能更改自己流程的环境。你无法触及父母的环境。换句话说,您所做的任何事情(设置/清除环境变量,更改本地目录等)对于父进程都是不可见的。
该标准明确指出:
setenv()函数应更新或添加变量 调用过程的环境 。
改变父母环境的唯一方法就是亲自去做。
答案 1 :(得分:2)
请参阅POSIX函数setenv
和putenv
。
setenv
http://pubs.opengroup.org/onlinepubs/009604599/functions/setenv.html
putenv
http://pubs.opengroup.org/onlinepubs/009604599/functions/putenv.html
正如POSIX所说 setenv()函数优于此函数。 (运行putenv)
我不想更改为执行该程序而复制的环境变量。
正如@cnicutar在他的回答中所做的那样,您只能更改当前流程的环境变量,而不能更改其父流程或其他流程。