【发布时间】:2020-04-22 11:53:40
【问题描述】:
This question and answer 演示了如何使用 Python 的 subprocess 模块与 Python 中的 bash 进行交互。
所以如果subprocess不使用系统的默认shell,那么它使用什么shell运行这样的命令:
import subprocess
print subprocess.check_output(["ls", "-la"])
【问题讨论】:
-
在Linux上
ls是普通程序-/bin/ls-所以它可以直接发送到系统运行程序。 -
是的,是什么让您认为 shell 被使用或根本需要?
-
所以它们是使用 C 标准库对内核的系统调用?
-
如此处所述:docs.python.org/3/library/… 除非您用
shell=True明确要求一个外壳,否则您不会得到外壳,在这种情况下,在 Linux 上,您会得到sh,而不是 @987654331 @. -
@SamMalayek 是的。如果您不使用
shell=True,它会使用自己的fork()和exec()。
标签: python subprocess