Mac OS X 真的符合 SUS 标准吗?

Mac OS X 真的符合 SUS 标准吗?

网上说Mac OS X 10.8已获得 The Open Group UNIX® 03 标准认证并且它是一个合规的系统

但一个简单的测试echo似乎表明情况并非如此:

 A) 基本规格状态

  实施最好不要支持任何选项。

 和

  应用 IEEE Std 1003.1-2001/Cor 1-2002,项目 XCU/TC1/D6/21,以便 echo 实用程序可以适应历史 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?



所以,问题是:
1. 这是否违反合规性?
2. Mac OS X 10.8 真的符合 SUS 标准吗?
3. 是否有部分 应用 XCU/TC1/D6/21 项,以便 echo 实用程序可以适应历史 BSD 行为。 有事要做吗?如果是这样,该项目在哪里解释?这 奥斯汀集团规范 1 号技术勘误表 不多说。
4.我错过了什么吗?

答案1

OS X 10.8 也被列为 UNIX 03 注册产品http://www.opengroup.org/openbrand/register/

如果您使用 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

OS X 的 sh 是 bash 的一个版本差异如下:

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

相关内容