Como 'exportar PATH' de C [fechado]

0

Imaginando como realizar um desses itens a partir de C, para que ele persista como seria de ~/.bashrc ou ~/.bash_profile :

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

Perguntando se devo usar o execl command mais ou menos assim:

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

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

Ou se houver outra maneira idiomática de realizar isso corretamente.

    
por Lance Pollard 20.08.2018 / 08:24

1 resposta

2

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.

    
por 20.08.2018 / 08:28

Tags