Mac OS X 真的兼容 SUS 吗?

use*_*322 1 osx utilities

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. 我错过了什么吗?

Lri*_*Lri 6

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 的一个版本,其差异如下:

  • POSIX 模式已启用
  • xpg_echo 已启用(echo 不支持任何选项并解释转义序列)
  • sh -l 不读取 .bash_profile
  • FCEDIT 默认为 ed 而不是 EDITOR 或 ed