更新: 感谢您为该hack解决问题所做出的贡献,我很高兴它很有用。但是 更好的 答案是三位一体的,在页面的下方很虚弱…
如果您所需的别名是在〜/ .bashrc中定义的,则由于以下几个原因它不会运行:
1)您必须给’shell’关键字arg:
subprocess.call('command', shell=True)否则,您给定的命令将用于查找可执行文件,而不是传递给外壳程序,而外壳程序将扩展别名和函数之类的内容。
2)默认情况下,subprocess.call和朋友使用’/ bin /
sh’shell。如果这是您要调用的Bash别名,则需要使用’executable’关键字arg告诉子进程使用bash而不是sh:
subprocess.call('command', shell=True, executable='/bin/bash')3)但是,/ bin / bash除非以’interactive’外壳程序(带有’-i’开头),否则不会源〜/
.bashrc。不幸的是,您不能传递可执行文件=’/ bin / bash
-i’,因为它认为整个值就是可执行文件的名称。因此,如果您的别名是在用户的常规交互式启动中定义的,例如在.bashrc中,则必须使用以下替代形式来调用命令:
subprocess.call(['/bin/bash', '-i', '-c', command])# i.e. shell=False (the default)



