如何使用python子进程模块执行.profile中定义的bash函数?

wji*_*271 1 python bash subprocess

我试图从python程序中调用我在.profile中定义的bash函数.对于上下文,我的函数调用chef的knife命令,如下所示:

  function knife-LHR() {
    knife $@ -c ~/.chef-LHR/knife.rb
  }
Run Code Online (Sandbox Code Playgroud)

如果你想知道为什么我不只是将函数的逻辑合并到我的python程序中,因为我的用户在他们的bash配置文件中定义了这个函数,我的意图是支持他们使用(在这种情况下)knife命令.

如何使用python子进程完成此操作?

mgi*_*son 5

我想这样做的最好方法是启动一个bash进程并让它调用命令:

import subprocess
subprocess.call(['bash', '-c', '. ~/.profile && knife-LHR'])
Run Code Online (Sandbox Code Playgroud)