2017-02-03 4 views
0

Also ich weiß, wie subprocess funktioniert und es viel verwenden, aber ich habe in ein seltsames Problem gerannt. Ich muss einen Export einiger Umgebungsvariablen ausführen. Der Grund dafür ist, dass ein Programm (Black-Box) ein Programm ausführt, das scheinbar in einer Subshell ausgeführt wird. Daher hat es keinen Zugriff auf die Umgebungsvariablen, aber es hat Zugriff auf alle meine Dateien.Python-Shell-Skript-Ausführung, die Umgebung an die Eltern übergeben

Ich kann die Umgebungsvariablen nicht hart codieren, also möchte ich source oder . die Datei, die die export Befehle darin hat. Wenn ich diese Datei in einem Subprozess I source oder . anschließe, hat dies keinen Einfluss auf den übergeordneten Prozess. In diesem Fall benötige ich entweder eine Funktion neben subprocess, die Shell-Befehle ausführen kann, ohne einen Unterprozess zu erstellen, falls dieser existiert. Ein anderes Problem ist, dass ein Subprozess nicht über die erforderlichen Berechtigungen zum Lesen der Datei verfügt.

Und das Kopieren der Umgebungsvariablen über os ist auch nicht wirklich möglich.

Gibt es außer subprocess noch etwas? Oder gibt es eine andere Art von Workaround?

Antwort

1

IMHO die einfachste Lösung, eine neue Shell besteht Skript bei der Schaffung von (nennen wir es run_black_box.sh), die das Setup-Skript-Quellen (nehmen wir an, es setup.sh genannt wird), um die Umgebung zu initialisieren und ruft dann die Black_Box Programm. Hier

ist ein möglicher Gehalt von run_black_box.sh:

#/bin/bash 
source setup.sh 
black_box 

Die Sie run_black_box.sh-subprocess zur Ausführung gelangen kann.

Verwandte Themen