С++ setenv разрешает другие переменные

Я использую С++ и setenv для установки переменной, как в этой программе ниже:

setenv("TEST", "$HOME/test", 1);
char* val = getenv("TEST");
printf("TEST=%s", val);

Вывод, который я получаю: "TEST=$HOME/test". Однако я хочу, чтобы результат был похож на «TEST=/home/toboxos/test». Я ничего не нашел, используя руководство по Linux. Есть ли какая-либо функция, разрешающая переменные среды, или я должен сделать это сам?


person Toboxos    schedule 30.08.2019    source источник


Ответы (1)


Эта замена, которую вы ожидаете, является функцией вашей оболочки, а не присущей среде.

Вам нужно getenv("HOME") самостоятельно соединить его с "/test" и использовать результат в качестве входных данных для setenv.

person Quentin    schedule 30.08.2019