如何从 C 中“导出 PATH”

如何从 C 中“导出 PATH”

想知道如何从 C 完成这些事情之一,以便它像从~/.bashrc或一样持续存在~/.bash_profile

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

想知道我是否应该使用execl命令有点像这样:

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

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

或者是否有另一种惯用的 C 方法来正确完成此操作。

答案1

您不能将变量从程序导出到父 shell,因为无法修改另一个进程的环境。

如果要设置子进程,请参见man setenvman execve

编辑

不同之处在于,它.bashrc是由 shell 本身执行的,而不是由 shell 的子进程执行的。由于它是由 shell 执行的,因此它可以修改 shell 的环境。

解决此问题的唯一方法是创建将由 shell 执行的命令:

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

然后在 Shell 中执行该命令的输出:

$(./myenv)

或者

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

但是修改其自身环境的仍然是 shell,它只是通过执行某些程序生成的命令来实现这一点。

相关内容