C から `export PATH` する方法

C から `export PATH` する方法

~/.bashrcまたはの場合と同じように、C からこれらのことの 1 つを実現するにはどうすればよいかと考えています~/.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

別のプロセスの環境を変更することはできないため、プログラムから親シェルに変数をエクスポートすることはできません。

子プロセスを設定する場合は、man setenvまたは を参照してくださいman execve

編集

違いは、 は.bashrcシェルのサブプロセスではなく、シェル自体によって実行されることです。 シェルによって実行されるため、シェルの環境を変更できます。

これを回避する唯一の方法は、シェルによって実行されるコマンドを作成することです。

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

次に、シェルでそのコマンドの出力を実行します。

$(./myenv)

または

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

しかし、シェルは依然として自身の環境を変更しており、何らかのプログラムから生成されたコマンドを実行することによってそれを行います。

関連情報