在python子进程中使用setenv

时间:2014-12-05 03:19:40

标签: python shell subprocess

我已经使用setenv设置环境变量的程序,但我收到的错误是"/bin/sh: setenv command not found"但是setenv是内置shell命令为什么会这样不使用python子进程。任何人都可以帮助我

我写的代码是:

def ansaunrel(self):
        apat = ['setenv ',' ANSA_SRV ','srtia027,srtia028,srtia004']
        subprocess.Popen(apat,shell=True)
        ansrun='/share/ansa/NOT_RELEASED/14.2.2/ansa64.sh'
        subprocess.Popen(ansrun,shell=True)

设置env变量后,我必须运行一个shell程序,但程序没有启动,因为environ变量设置不正确。那我该怎么做呢

1 个答案:

答案 0 :(得分:1)

setenv是一个内置的csh,而不是内置的bash;如果你想运行setenv,你会使用错误的shell。

但看起来你想要为你正在尝试的事情运行setenv并不是一件好事。如果要为子流程设置环境,请使用env参数指向Popen:

env = dict(os.environ)
env['ANSA_SRV'] = 'srtia027,srtia028,srtia004'
subprocess.Popen(ansrun, shell=True, env=env)