如何获取指定Linux命令的所有可能返回值?
uname -s 可能返回值及通用查询方法
uname -s 常见返回值整理
适配跨平台脚本时,不需要硬匹配完整返回值,优先匹配前缀即可覆盖同类型系统,常见返回值前缀如下:
- 主流类Unix系统:
Linux:所有标准Linux发行版Darwin:macOS、iOS等苹果生态操作系统FreeBSD/OpenBSD/NetBSD:BSD家族操作系统SunOS:Solaris/illumos 系操作系统AIX:IBM AIX商用操作系统
- Windows兼容层:
CYGWIN*:Cygwin运行环境,完整返回值会附带Windows版本号,例如CYGWIN_NT-10.0MINGW*:MinGW运行环境,完整返回值会附带架构和Windows版本号,例如MINGW64_NT-10.0MSYS*:MSYS运行环境,完整返回值会附带Windows版本号,例如MSYS_NT-10.0
- 小众操作系统:
Haiku:Haiku开源桌面操作系统GNU:纯GNU操作系统(无Linux内核)
同类跨平台命令通用查询方法
如果需要确认其他类似命令的返回值范围,避免判断逻辑出错,可以用以下方法查询:
- 查POSIX标准定义:基础命令的返回值命名规则都在POSIX标准中有统一规范,优先参考标准定义可以避开非官方的自定义值
- 查命令官方手册:执行
man 命令名即可查看官方说明,主流发行版的手册会标注跨平台场景下的常见返回值说明 - 参考成熟开源项目的适配逻辑:bash、coreutils、Git这类需要覆盖全平台的开源项目,源码中已经沉淀了非常完善的系统/命令判断规则,可以直接复用其判断逻辑
内容的提问来源于stack exchange,提问作者Hoang Ho
相关产品推荐
相关产品推荐

