【问题标题】:Updating PATH variable on Linux在 Linux 上更新 PATH 变量
【发布时间】:2022-01-21 12:19:11
【问题描述】:

我正在尝试通过 c 中的程序更新 PATH 变量,但是当我尝试更新它时,问题就来了。我已经尝试过 system("source .profile") 和 execlp("source", "source", ".profile", NULL) 但它们都不起作用,我不知道如何让它运行所以 PATH 得到更新。有人对此有任何想法吗?谢谢。

【问题讨论】:

  • 环境变量是特定于进程的,由子进程继承。如果你启动另一个进程更改环境变量,环境变量可能会在其他进程中更改,但原进程中的变量将完全不受影响。
  • 我还没有创建一个新的进程来做这件事,只是修改了 .profile 文件。我只想升级它以永久设置 PATH
  • 我还没有创建一个新的流程来做这件事你确实做到了。这就是system("source .profile") 所做的——它启动了一个子进程。
  • 哦,是的,我明白了,但为什么使用 execlp 它也不会更新环境变量?
  • 我想用这个脚本永久设置一个新路径,但这是你更新原始路径的问题

标签: c linux file exec system


【解决方案1】:

可以使用stdlib.h中的setenv函数来设置环境变量

setenv() 函数将变量名添加到环境中 value 值,如果 name 尚不存在。如果名称确实存在 在环境中,如果覆盖是,则其值更改为值 非零;如果 overwrite 为零,则 name 的值不会改变 (并且 setenv() 返回成功状态)。这个函数复制 由名称和值指向的字符串(与 putenv(3) 相比)。

unsetenv() 函数从 环境。如果环境中不存在名称,则 函数成功,环境不变。

【讨论】:

  • 我已经尝试过了,但这只是暂时的,我想永久设置所以我必须修改.profile。
猜你喜欢
  • 2016-04-08
  • 2023-04-04
  • 2020-04-18
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 2015-09-29
  • 2019-01-20
  • 2015-01-21
相关资源
最近更新 更多