我想知道是否可以从 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 程序并从其中调用 setenv
或 putenv
时,这些函数会更改 C 程序及其子程序的环境变量——而不是父 shell从中运行 C 程序。
因此您可以使用 source
命令或 shell 中的类似命令来更改程序的环境,或者使用 fork
和 exec
从中运行 shell一个 C 程序作为它的子程序。
关于c - 在 C 中设置 shell 的 PATH 和 HOME 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555885/