Вы должны использовать <a href="http://www.manpagez.com/man/3/getenv/" rel="nofollow noreferrer">getenv</a>()
, нет необходимости проходить через оболочку:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("PATH='%s'\n", getenv("PATH"));
return EXIT_SUCCESS;
}
Но вы не сможете изменить значение. Переменные среды наследуются в дочерние процессы, но дочерняя имеет свою собственную копию. Вы не можете изменить среду оболочки из другой программы, независимо от того, на каком языке она написана. Конечно, вы можете изменить значение своего собственного процесса, но это не то, что вы просили сделать.
В самой оболочке вы можете изменить ее текущие настройки среды, но только там. Вот почему вам нужно использовать «источник» для запуска сценариев оболочки, которые изменяют среду.