Internet 称 Mac OS X 10.8已获得 The Open Group UNIX® 03 标准的认证,并且它是一个兼容系统。
但是一个简单的测试echo
似乎表明并非如此:
? a) 基本规范规定
??实现不支持任何选项。
?和
??IEEE Std 1003.1-2001/Cor 1-2002, item XCU/TC1/D6/21 被应用,因此回声实用程序可以适应历史 BSD 行为。
? b) 手册页说状态
大纲
echo [-n] [字符串 ...]
?和
标准
echo 实用程序符合由 Cor 修订的 IEEE Std 1003.1-2001 (``POSIX.1'')。1-2002 年。
? c)现实是它支持选项。至少e
?
(user@avitus tmp)$ uname -a
Darwin avitus.local 12.3.0 Darwin Kernel Version 12.3.0: Sun Jan 6 22:37:10 PST 2013; root:xnu-2050.22.13~1/RELEASE_X86_64 x86_64
(user@avitus tmp)$ echo -e "test \tAm I SUS compliant?"
test Am I SUS compliant?
(user@avitus tmp)$ echo "test \tAm I SUS compliant?"
test \tAm I SUS compliant?
Run Code Online (Sandbox Code Playgroud)
所以,问题是:
1. 这是否违反了合规性?
2. Mac OS X 10.8 真的兼容SUS吗?
3. 是否应用了 XCU/TC1/D6/21 部分项,以便回声实用程序可以适应历史 BSD 行为。有事吗?如果是这样,该项目在哪里解释?在
对奥斯汀组规格技术勘误1号 并没有太多发言权。
4. 我错过了什么吗?
OS X 10.8 也在http://www.opengroup.org/openbrand/register/ 中列为 UNIX 03 注册产品。
如果您使用的是 bash,则默认情况下它不符合 POSIX。但是,默认情况下,echo 在 sh 中不支持任何选项。
$ bash
$ builtin echo -e a; /bin/echo -e a
a
-e a
$ sh
$ builtin echo -e a; /bin/echo -e a
-e a
-e a
$ shopt -u xpg_echo
$ builtin echo -e a; /bin/echo -e a
a
-e a
Run Code Online (Sandbox Code Playgroud)
OS X 的 sh 是 bash 的一个版本,其差异如下: