GNU标准一致性

来自泡泡学习笔记
跳到导航 跳到搜索

在少数情况下,GNU工具的默认行为与POSIX标准不兼容。为了抑制这些不兼容性,可以定义POSIXLY_CORRECT环境变量。除非您需要检查POSIX一致性,否则通常不需要定义POSIXLY_CORRECT。


较新版本的POSIX有时与较旧版本不兼容。例如,旧版本的POSIX要求命令'sort +1'根据每个输入行中的第二个和后续字段进行排序,但在POSIX 1003.1-2001中,同样的命令要求对名为+1的文件进行排序,您必须使用命令'sort -k 2'来进行基于字段的排序。更进一步的是,POSIX 1003.1-2008允许实现具有旧版本或新版本的行为。


GNU工具通常符合您系统标准的POSIX版本。要使它们符合不同版本的POSIX,可以将_POSIX2_VERSION环境变量定义为形式为yyyymm的值,指定采用该标准的年份和月份。目前有三个值支持_POSIX2_VERSION:'199209'代表POSIX 1003.2-1992,'200112'代表POSIX 1003.1-2001,'200809'代表POSIX 1003.1-2008。例如,如果您的系统采用POSIX 1003.1-2001,但正在运行包含传统用法(如'sort +1'或'tail +10')的软件,您可以通过在环境中设置'_POSIX2_VERSION=200809'来解决兼容性问题。