Ваша функция протекает. В справочной странице setenv
написано:
Эта функция делает копии строк, на которые указывают имя и значение
Так что вам не нужно копировать их самостоятельно, прежде чем передавать их ему.
Выполняете ли вы такую программу из оболочки?
./a.out FOO 42
Что ж, тогда переменная окружения будет установлена для выполняемого таким образом процесса (a.out
) и будет унаследована запускаемым ею процессам. Но он не будет "пузыриться" в оболочку, которая выполнила a.out
. По этой же причине такие команды, как set
или export
, являются встроенными оболочками, а не реальными программами. Оформить заказ "Справка по экспорту" в bash.