Sie können keine Variablen aus einem Programm in die übergeordnete Shell exportieren, da die Umgebung eines anderen Prozesses nicht geändert werden kann.
Wenn Sie einen untergeordneten Prozess einrichten möchten, lesen Sie man setenv
oder man execve
.
Bearbeiten
Der Unterschied besteht darin, dass .bashrc
sie von der Shell selbst ausgeführt wird, nicht von einem Unterprozess der Shell. Während es von der Shell ausgeführt wird, kann es die Umgebung der Shell ändern.
Die einzige Möglichkeit, dies zu umgehen, besteht darin, Befehle zu erstellen, die von der Shell ausgeführt werden:
main () { printf ("PATH=/dir\n"); }
Führen Sie dann in der Shell die Ausgabe dieses Befehls aus:
$(./myenv)
Oder
./myenv > /tmp/file source /tmp/file
Es ist jedoch immer noch die Shell, die ihre eigene Umgebung ändert, indem sie Befehle ausführt, die von einem Programm generiert werden.