我使用一個代碼執行bash腳本,定義了很多環境變量的環境變量:執行bash腳本,定義使用Python
#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
# Code used to get the value of variable before the call to my script
command = "echo $MYDIR"
ps = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
my_dir = ps.communicate()[0]
print "my_dir", my_dir
subprocess.Popen(["/bin/sh", "/home/user/env_file"])
# Code used to get the value of established variable
command = "echo $MYDIR"
ps = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
my_dir = ps.communicate()[0]
print "my_dir", my_dir
我的/ home /用戶/ env_file的含量下一個:
#!/bin/bash
export MYDIR=/home/user
export MYDIR2=/home/user2
export MYDIR3=/home/user3
export MYDIR4=/home/user4
export MYDIR5=/home/user5
export MYDIR6=/home/user6
export MYDIR7=/home/user7
export MYDIR8=/home/user8
export MYDIR9=/home/user9
export MYDIR10=/home/user10
export MYDIR11=/home/user11
export MYDIR12=/home/user12
export MYDIR13=/home/user13
export MYDIR14=/home/user14
export MYDIR15=/home/user15
export MYDIR16=/home/user16
當我執行Python代碼時,我沒有得到my_dir變量的任何值。我該如何執行此操作?
此致敬禮。
程序只能更改自身及其子項的環境變量,而不是啓動它的程序的環境變量。因此,從Python解釋器開始的bash腳本不能爲該Python解釋器設置變量。 –
由於子進程無法更改其父環境,因此無法執行腳本來執行此操作。您需要編寫讀取腳本的Python代碼,解析分配,然後分配給'os.environ'。 – Barmar
@Barmar,... wellll。我不願意鼓勵某人編寫自己的shell解析器 - 這條道路上有許多陷阱。我正在開始在shell中實現的一個答案,該答案會生成一個任意腳本,並將所有在執行結束時出現的環境變量寫入NUL分隔格式的stdout中。 –