根据该subprocess
模块的文档,它的默认 shell 是/bin/sh
,但我对硬编码这些常量有一种根深蒂固的、可能是非理性的厌恶。
因此,我更喜欢引用subprocess
. 我还没有找到任何方法来subprocess
直接询问这个常数。我管理过的最好的是
def _getshpath():
return subprocess.check_output('which sh', shell=True).strip()
或者
def _getshpath():
return subprocess.check_output('echo "$0"', shell=True).strip()
...两者看起来都非常脆弱,因为它们的有效性最终取决于我首先要确定的具体价值。(即,如果这个可执行文件的值不是“/bin/sh”,那么任何一个定义都可能很容易变得毫无意义。)
获得此路径的最佳实践是什么(没有将其硬编码为“/bin/sh”)?
谢谢!