Для работы с переменными используются функции getvar() и setvar() из библиотеки stdlib.h.
Как понятно из названий — функция getvar() используется для получения значения переменной, а setvar() — для добавления или изменения.
Для демонстрации — напишем такой код:
#include <stdio.h>
#include <stdlib.h>
int main () {
char *home, *newvar;
// получем занчение переменной $HOME
home = getenv("HOME");
// Создаём новую переменную $NEWVAR со значением newvarvalue-1
setenv("NEWVAR", "newvarvalue-1", 0);
// записываем занчение $NEWVAR в локальную переменную newvar
newvar = getenv("NEWVAR");
printf ("Home: %s, and NEWVAR: %sn", home, newvar);
// задаём новое значение переменной, но т.к. int replace = 0 - оно не изменится
setenv("NEWVAR", "newvarvalue-2", 0);
newvar = getenv("NEWVAR");
printf ("NEWVAR: %sn", newvar);
// задаём новое значение переменной, но т.к. int replace = 1 - оно изменится
setenv("NEWVAR", "newvarvalue-3", 1);
newvar = getenv("NEWVAR");
printf ("NEWVAR: %sn", newvar);
return 0;
}
И результат выполнения:
$ gcc getenv.c -o getenv
$ ./getenv Home: /home/setevoy, and NEWVAR: newvarvalue-1 NEWVAR: newvarvalue-1 NEWVAR: newvarvalue-3
Для удаления переменных — используется функция unsetenv().
Перепиешм предыдущий код:
#include <stdio.h>
#include <stdlib.h>
int main () {
char *newvar;
// Создаём новую переменную $NEWVAR со значением newvarvalue-1
setenv("NEWVAR", "newvarvalue", 0);
// записываем занчение $NEWVAR в локальную переменную newvar
newvar = getenv("NEWVAR");
if (newvar) {
printf ("NEWVAR: %sn", newvar);
} else {
printf ("NEWVAR not defined: %sn", newvar);
}
// удаляем переменную $NEWVAR
unsetenv ("NEWVAR");
newvar = getenv("NEWVAR");
if (newvar) {
printf ("NEWVAR: %sn", newvar);
} else {
printf ("NEWVAR not defined: %sn", newvar);
}
return 0;
}
Результат:
$ ./getenv NEWVAR: newvarvalue NEWVAR not defined: (null)




