我想通过C程序在bash中设置路径环境变量。 所以我用' setenv'功能,但它不是解决的答案。
有人建议用另一种方法在C编程中解决这个问题吗?
我认为程序读取配置文件的另一个解决方案,然后修改并保存,但实际上当我打开这个文件时,我没有关于PATH变量的字符串。
答案 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;