【问题标题】:Is there a way to detect what type of shell os.system uses?有没有办法检测 os.system 使用什么类型的 shell?
【发布时间】:2017-04-02 05:35:39
【问题描述】:

你如何检测os.system 会调用什么shell?

我不确定os.namesys.platform 是否可以工作,因为系统可能被配置为使用非标准外壳,例如Windows 上的cygwin 外壳。

如果我的脚本要在 windows 和 linux 上运行,我需要知道系统使用的 shell 以了解构建命令的语法

【问题讨论】:

标签: python shell cross-platform system-calls platform


【解决方案1】:

os.system(command) docs 状态(由我总结和强调):

在子shell 中执行命令(字符串)。这是由 调用标准 C 函数 system(),并具有相同的 限制。

WINDOWS

对于 windows,我们可以从提到的 os.system() 文档中阅读:

在 Windows 上,返回值是系统 shell 返回的值 运行命令后。 shell由windows环境给定 变量COMSPEC:一般是cmd.exe,返回退出状态 命令运行;在使用非本地 shell 的系统上,请咨询您的 外壳文档。

UNIX

对于 Unix,提到的 os.system() 文档如下:

在 Unix 上,返回值是进程的退出状态,编码为 为 wait() 指定的格式。请注意,POSIX 没有指定 C system() 函数返回值的含义.

Linux docs 似乎声明了关于提到的 C 函数:

system()通过调用/bin/sh -c命令执行命令中指定的命令,命令执行完毕后返回 完成。

所以,我想不用说,在大多数(尽管不一定是全部)Unix 系统上,来自 python 的 os.system() 调用将通过 Bourne shell 命令 c.q 执行。 /bin/sh -c.

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2019-10-28
    • 2018-02-24
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多