从Python脚本中使用Source命令

0 投票
1 回答
2759 浏览
提问于 2025-04-17 08:02

我在尝试从一个Python脚本中调用Unix的source命令。我的目标是通过subprocess.Popen来实现,并将操作系统的环境传递给它。

下面是我用来执行命令的函数:

def run_command(command, tst_env):
    print tst_env
    try:
       p = subprocess.Popen(command, env=tst_env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
       stout, er = p.communicate()
       print stout, er
       ret = p.wait()
    except Exception, e:
       print "Exception: ", e
    else :
        if ret:
          print command, "failed", ret
          return
        else:
          print command, "succeeded", ret
    return p

tst_env是一个os.environ类型的对象。

run_command(source script.sh, os.environ)显示它执行成功了。

但是我无法访问脚本中的函数。

情况是这样的:

script.sh的内容如下:

function task_test() {
   echo "Test function called"
}

source script.sh

task_test会调用shell脚本中的函数。

但是我无法从Python中调用shell脚本里的函数。

希望我说得清楚。

1 个回答

1

subprocess 是用来执行其他程序或命令的工具。它并不能让你在 Python 和命令行之间建立直接的联系。换句话说,你不能把一个命令行的脚本“加载”进来,然后把它当成一个可以在 Python 中调用的对象。你只能执行这个脚本里的内容。

撰写回答