如何检测shell os.system
将调用哪个?
我不确定os.name
或sys.platform
是否有效,因为系统可能配置为使用非标准shell,例如Windows上的cygwin shell。
如果我的脚本要在windows和linux上运行,我需要知道系统正在使用的shell来了解使用
构建命令的语法答案 0 :(得分:0)
os.system(command) docs州(由我总结和强调):
在子shell中执行命令(字符串)。这是通过实现的 调用标准C功能系统(),并具有相同的功能 限制。
<强> WINDOWS 强>:
对于Windows,我们可以从提到的os.system()docs中读取这个:
在Windows上,返回值是系统shell返回的值 运行命令后。 shell由Windows环境提供 变量COMSPEC :它通常是cmd.exe,它返回退出状态 命令运行;在使用非本机shell的系统上,请咨询您的 shell文档。
<强> UNIX 强>:
对于Unix,提到的os.system()文档读取:
在Unix上,返回值是编码进程的退出状态 为wait()指定的格式。请注意,POSIX未指定 C系统()函数返回值的含义。
Linux docs似乎表明了关于提到的C函数:
system()通过调用/ bin / sh -c 命令执行命令中指定的命令,并在命令执行后返回 完成。
所以,我想可以说,在大多数(虽然不一定是全部)Unix系统中,来自python的os.system()调用将通过Bourne shell命令c.q执行。 /bin/sh -c
。