c - 在 C 中设置 shell 的 PATH 和 HOME 环境变量

标签 c shell variables path environment

我想知道是否可以从 C 程序设置 shell 的 HOME 和 PATH 环境变量?

我将 HOME 和 PATH 值都存储在字符串中,但我不知道如何让 shell 看到它。我尝试使用 putenv 函数,但无法正常工作。

这是我尝试设置 PATH 的代码。我从另一个文件读取 PATH 值。

//Find and store path value
   fseek(fp, 5, SEEK_SET);
   fread(path, 28, 1, fp);
   char *varpath = path;
   ret = putenv(varpath);

提前致谢!

最佳答案

子进程不能为其父进程设置环境变量。

当您运行 C 程序并从其中调用 setenvputenv 时,这些函数会更改 C 程序及其子程序的环境变量——而不是父 shell从中运行 C 程序。

因此您可以使用 source 命令或 shell 中的类似命令来更改程序的环境,或者使用 forkexec 从中运行 shell一个 C 程序作为它的子程序。

关于c - 在 C 中设置 shell 的 PATH 和 HOME 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555885/

相关文章:

linux - 在两台机器上运行脚本

php - 如何在没有表单的情况下将变量从一个 php 页面传递到另一个页面?

c - 逼近常数 e 的简单 C 程序

linux - Expect 命令在 Linux 中再次要求输入密码

Bash 函数没有被调用,除非我回显返回值

Python 打印计算比执行计算需要更多时间

javascript - 从 JavaScript 文件名数组创建变量

c - 如何计算给定字符串中的单词总数和每个单词的字符数并创建一维数组?

c - gdbus:在信号发射后立即释放信号参数是否安全

c - 读取字符串字符时出错 - Visual Studio 2017