据为subprocess
模块的文档,它的默认外壳是/bin/sh
,但我有一种根深蒂固的,也可能是非理性的,厌恶硬编码这样的常量。如何获得“经典UNIX外壳”的Python
因此,我更喜欢引用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的“)?
谢谢!
'subprocess'本身将路径硬编码为'/ bin/sh'。也许你应该这样做,或者只是使用你描述的方法之一:) – 2012-04-27 22:51:50
该路径硬编码(/ bin/sh)在哪里?它是否是子进程的成员? – ncRubert 2012-04-27 23:14:30
/bin/sh应该是标准的POSIX shell,所以你不能在POSIX环境中出错。在任何其他环境中......谁知道? – 2012-04-27 23:15:52