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



我想通过C程序在bash中设置一个路径环境变量。所以我使用"setenv"函数进行编码,但这不是解决问题的答案。

有人能提出另一种方法来解决C编程中的这个问题吗?

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

您可以使用setenv()putenv()来设置环境变量。但这些将仅针对给定的程序进行设置。不能为shell或其父进程设置环境变量。

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

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

char *append_path = malloc(sizeof(char) * 1000);
append_path = "/trunk/software/hmac_sha256/:.";
printf("Append to path is:n%sn", 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%sn", 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%sn", current_path);
char *new_path = malloc(sizeof(char) * 1000);
new_path = "/trunk/software/hmac_sha256/:.";
printf("New to add path is:n%sn", 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%sn", path);

相关内容

  • 没有找到相关文章

最新更新