我使用一个代码执行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中。 –