【发布时间】:2022-01-21 12:19:11
【问题描述】:
我正在尝试通过 c 中的程序更新 PATH 变量,但是当我尝试更新它时,问题就来了。我已经尝试过 system("source .profile") 和 execlp("source", "source", ".profile", NULL) 但它们都不起作用,我不知道如何让它运行所以 PATH 得到更新。有人对此有任何想法吗?谢谢。
【问题讨论】:
-
环境变量是特定于进程的,由子进程继承。如果你启动另一个进程更改环境变量,环境变量可能会在其他进程中更改,但原进程中的变量将完全不受影响。
-
我还没有创建一个新的进程来做这件事,只是修改了 .profile 文件。我只想升级它以永久设置 PATH
-
我还没有创建一个新的流程来做这件事你确实做到了。这就是
system("source .profile")所做的——它启动了一个子进程。 -
哦,是的,我明白了,但为什么使用 execlp 它也不会更新环境变量?
-
我想用这个脚本永久设置一个新路径,但这是你更新原始路径的问题