Вы не можете экспортировать переменные из программы в родительскую оболочку, потому что невозможно изменить среду другого процесса.
Если вы хотите настроить дочерний процесс, посмотрите man setenv
или man execve
.
редактировать
Разница в том, что .bashrc
выполняется самой оболочкой, а не подпроцессом оболочки. Поскольку он выполняется оболочкой, он может изменять среду оболочки.
Единственный способ обойти это - создать команды, которые будут выполняться оболочкой:
main () { printf ("PATH=/dir\n"); }
Затем в командной консоли выполните вывод этой команды:
$(./myenv)
Или же
./myenv > /tmp/file source /tmp/file
Но это все еще оболочка, которая изменяет свою собственную среду, она просто делает это, выполняя команды, сгенерированные из какой-то программы.