Вы не можете сделать это с несколькими вызовами на subprocess.Popen()
. Каждый вызов создает новый дочерний процесс, и изменения, которые они вносят в свою среду, не распространяются обратно на процесс Python.
Вы можете сделать это, объединив все команды в одну командную строку, которая будет выполняться bash -c
.
cmd = 'cd abc; ls; export z=88; echo $z'
subprocess.Popen(['bash', '-c', cmd], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=my_env,text=True)
Также нет смысла экспортировать z
, так как вы не запускаете дочерние процессы оболочки, которые используют переменную среды. Просто назначьте обычную переменную оболочки с z=88
.