如何從 C 中「匯出 PATH」

如何從 C 中「匯出 PATH」

想知道如何從 C 中完成這些事情之一,以便它像從~/.bashrcor一樣持續存在~/.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 修改自己的環境,它只是透過執行某些程式產生的命令來實現。

相關內容