如何在C语言代码中设置linux中的路径环境变量

时间:2015-03-25 15:56:41

标签: c linux .bash-profile env

我想通过C程序在bash中设置路径环境变量。 所以我用' setenv'功能,但它不是解决的答案。

有人建议用另一种方法在C编程中解决这个问题吗?

我认为程序读取配置文件的另一个解决方案,然后修改并保存,但实际上当我打开这个文件时,我没有关于PATH变量的字符串。

2 个答案:

答案 0 :(得分:7)

您可以使用setenv()putenv()来设置环境变量。但这些只会针对给定的程序设置。您无法为shell或其父进程设置环境变量。

答案 1 :(得分:-1)

这是一个定义Python路径的示例。

创建一个字符串路径并将其附加到python路径。



char *append_path = malloc(sizeof(char) * 1000);
append_path = "/trunk/software/hmac_sha256/:.";
printf("Append to path is:\n%s\n", append_path);           
setenv("PYTHONPATH",append_path,1);//Set PYTHONPATH TO working directory https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/setenv.htm
char *path = Py_GetPath();
printf("Python search path is:\n%s\n", path);




这应该将字符串附加到PYTHONPATH环境变量。对我来说,它正如前所述。 如果替换变量而不附加变量,那么您只需要先读取环境变量,追加新字符串然后执行" setenv"。

例如



//include string functions
#include <string.h>

....

char *current_path = malloc(sizeof(char) * 1000);
current_path = Py_GetPath();
printf("Current search path is:\n%s\n", current_path);
char *new_path = malloc(sizeof(char) * 1000);
new_path = "/trunk/software/hmac_sha256/:.";
printf("New to add path is:\n%s\n", new_path);
snprintf(current_path, sizeof(char) * 1000, "%s%s", current_path,new_path);//this concatenate both strings
setenv("PYTHONPATH",current_path,1);//Set PYTHONPATH TO working directory https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/setenv.htm
char *path = Py_GetPath();
printf("Python search path is:\n%s\n", path);
&#13;
&#13;
&#13;