Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the environment variables of a subprocess after it finishes running?

I'm looking for a way to do this, so that I can pass it to the environment of another subprocess.

like image 652
user443850 Avatar asked Dec 06 '22 21:12

user443850


1 Answers

Here's a simple function which runs a command in a subprocess, then extracts its environment into the current process.

It's based on Fnord's version, without the tempfile, and with a marker line to distinguish the SET command from any output of the process itself. It's not bulletproof, but it work for my purposes.

def setenv(cmd):
    cmd = cmd + ' && echo ~~~~START_ENVIRONMENT_HERE~~~~ && set'

    env = (subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
                     .stdout
                     .read()
                     .decode('utf-8')
                     .splitlines())

    record = False
    for e in env:
        if record:
            e = e.strip().split('=')
            os.environ[e[0]] = e[1]
        elif e.strip() == '~~~~START_ENVIRONMENT_HERE~~~~': 
            record = True
like image 156
Wade Brainerd Avatar answered Dec 29 '22 00:12

Wade Brainerd