Cómo "exportar RUTA" desde C

Cómo "exportar RUTA" desde C

Me pregunto cómo lograr una de estas cosas desde C, para que persista como lo haría desde ~/.bashrco ~/.bash_profile:

export PATH=~/bin:$PATH
export PS1="$ "

Me pregunto si debería usar elexecldominioalgo así como esto:

#include <stdio.h>
#include <unistd.h>
#include <dirent.h>

int main (void) {
  return execl("/bin/export", "...", NULL);
}

O si hay otra forma idiomática en C de lograr esto correctamente.

Respuesta1

No puede exportar variables de un programa al shell principal porque no es posible modificar el entorno de otro proceso.

Si desea configurar un proceso hijo, consulte man setenvo man execve.

Editar

La diferencia es que .bashrclo ejecuta el propio shell, no mediante un subproceso del shell. Como lo ejecuta el shell, puede modificar el entorno del shell.

La única forma de solucionar esto es crear comandos que serán ejecutados por el shell:

main ()
{
    printf ("PATH=/dir\n");
}

Luego, en el Shell, ejecute la salida de ese comando:

$(./myenv)

O

./myenv > /tmp/file
source /tmp/file

Pero sigue siendo el shell el que modifica su propio entorno, simplemente lo hace ejecutando comandos que se generan a partir de algún programa.

información relacionada