【发布时间】:2014-04-25 20:43:19
【问题描述】:
我有一些简单的 bash 脚本,我想用 python 进行翻译。在使用子进程调用外部程序之前,我需要定义一些 bash 环境变量。特别是我需要加载一个模块环境。原始的 bash 看起来像这样
#!/bin/bash
source /etc/profile.d/modules.sh
module purge
module load intel
./my_code
我想用子进程调用my_code,但是如何将module定义的变量传递给shell?
编辑:
我第一次尝试转换上面的脚本是
#!/usr/bin/python -tt
import subprocess
subprocess.call("source /etc/profile.d/modules.sh",shell=True)
subprocess.call("module purge",shell=True)
subprocess.call("module load intel",shell=True)
subprocess.call("./mycode",shell=True)
但这失败了,因为环境变量(我认为是 LIBRARY_PATH 和 PATH 和 C_INCLUDE)在子进程启动的 shell 中被修改,但是随后这个 shell 死掉了,并且这些变量不会被后续的 shell 继承。所以问题是:如何启动模块命令,然后使用 os.environ 保存相关变量?
【问题讨论】:
-
那么你的问题是什么?
-
我想现在问题很清楚了,不是吗?
标签: python bash scripting subprocess