SUS扩展了POSIX;LSB扩展了POSIX和SUS,但有一些冲突。
只有经过SUS认证的操作系统才能被称为 "Unix"(因为SUS的所有者Open Group拥有Unix商标);并非所有的Linux发行版都符合LSB,例如Debian和Ubuntu就不符合。
POSIX
Portable Operating System Interface(POSIX) / 可移植操作系统接口 :由IEEE计算机协会指定的一系列标准,用于保持操作系统之间的兼容性。
从官方正式角度,POSIX不能简单的认为就是UNIX,因为IEEE对UNIX商标没有所有权。
POSIX标准化包括:
-
C头文件
-
shell和unitilities:ls、awk、echo、vi等。
-
系统接口:系统调用和库函数
认证种类包括:
-
POSIX认证(通过自动的一致性测试):MacOS、Oracle Solaris、华为EulerOS
-
基本上符合POSIX标准: Linux, FreeBSD, Android, Darwin
请注意,Darwin构成了macOS的基于Unix的核心组件集。Darwin大部分与POSIX兼容,但从未被认证,macOS则通过认证了。
Zsh能够模拟POSIX shells,但其默认工作模式是不兼容POSIX的。
用--posix选项调用Bash或在脚本中使用set -o posix语句,会使Bash基本符合POSIX。
具体介绍参见:https://en.wikipedia.org/wiki/POSIX
Single UNIX Specification / 单一UNIX规范
POSIX标准构成了单一UNIX规范的核心。有时我们用 "SUS "来指代完整的标准,而用 "POSIX "来指代基本标准和可能的不以UNIX为重心的选项组。(这意味着POSIX是SUS的一个子集)
只有符合要求的操作系统才能使用 "UNIX "商标。很少有基于BSD和Linux的操作系统是符合单一UNIX规范要求的。
macOS是符合SUS规范的,可以查看以下网址:The Register of UNIX® Certified Products。
现在,Open Group同时负责认证POSIX和SUS。POSIX和SUS在2001年后开始趋于一致。
SUS的版本,在Opengroup网站上查,有UNIX 95、UNIX 98、UNIX03和UNIX V7等版本。
Linux Standard Base (LSB)
https://en.wikipedia.org/wiki/Linux_Standard_Base
Linux不是经过POSIX认证的系统,想通过POSIX认证的话代价会很高。
LSB由Linux基金会的一个工作小组维护。
LSB以POSIX、SUS和其他一些开放标准为基础,但在某些方面对它们进行了扩展。
例如,LSB规定了:标准库、一些扩展POSIX标准的命令和工具、文件系统层次结构的布局、运行级别、打印系统,包括打印缓冲系统CUPS和打印过滤器工具Foomatic以及X窗口系统的一些扩展。
ABI:application binary interface,应用程序二进制接口(LSB被设计为二进制兼容)。
2015年9月,Debian项目确认,虽然对文件系统层次标准(FHS)的支持将继续,但对LSB的支持已经被放弃。2015年11月,Ubuntu也随Debian一样。
要获得LSB版本,在终端运行命令:
$ lsb_release -a
比如我的Ubuntu 20.04.1的结果:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
LSB和POSIX标准之间是有冲突的。
具体的LSB标准请参见:LSB Specifications
参考:
1,POSIX vs SUS vs LSB