Como `exportar PATH` de C

Como `exportar PATH` de C

Querendo saber como realizar uma dessas coisas em C, para que persista como aconteceria em ~/.bashrcou ~/.bash_profile:

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

Querendo saber se devo usar oexeclcomandomais ou menos assim:

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

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

Ou se existe outra maneira idiomática em C de fazer isso corretamente.

Responder1

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 setenvou man execve.

Editar

A diferença é que .bashrcé executado pelo próprio shell, não por um subprocesso do shell. À medida que é executado pelo shell, 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, apenas executando comandos gerados a partir de algum programa.

informação relacionada