Você não pode exportar variáveis de um programa para o shell pai, porque não é possível modificar o ambiente de outro processo.
Se você quiser configurar um processo filho, consulte man setenv
ou man execve
.
Editar
A diferença é que .bashrc
é executado pelo próprio shell, não por um subprocesso do shell. Como ele é executado pelo shell, ele pode modificar o ambiente do shell.
A única maneira de contornar isso é criar comandos que serão executados pelo shell:
main ()
{
printf ("PATH=/dir\n");
}
Em seguida, no Shell, execute a saída desse comando:
$(./myenv)
Ou
./myenv > /tmp/file
source /tmp/file
Mas ainda é o shell que modifica seu próprio ambiente, ele apenas executa comandos que são gerados a partir de algum programa.