我正在使用豪华测试我的shell脚本,我想在任何POSIX兼容的shell上成功运行.在这样做时,我发现command -v
豪华版不支持该选项.也不是type
.
我理解type
不支持,因为POSIX不要求它.这将在https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=397601#10中讨论.
"type"是X/Open扩展名; 请注意POSIX标准中的XSI标记.由于POSIX或debian政策不要求它,因此豪华没有实现它.
http://pubs.opengroup.org/onlinepubs/009695399/utilities/type.html确认了这一点.请参阅[XSI]
概要中的保证金代码.
但我不明白为什么command -v
豪华不支持选项.
有些人提到这command -v
是https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=218530#131的可选项.
并且"命令-v"是一个可选功能,根据 http://www.opengroup.org/onlinepubs/009695399/utilities/ 提及它.
但我无法在http://pubs.opengroup.org/onlinepubs/009695399/utilities/command.html上确认这一点.你能在这里看到任何表明该-v
选项是可选的command
吗?
如果没有,是posh
不符合POSIX?
这取决于他们兼容的POSIX版本.在2004年POSIX材料,command
具有-v
与-V
标准的可选部分的选项- "用户可携"子集.
POSIX 2008(2013年修订)未标记command
"用户可移植性"子集规范的任何部分:
概要
command [-p] command_name [argument...] command [-p][-v|-V] command_name描述
该
command
实用程序将使shell将参数视为一个简单的命令,从而抑制命令搜索和执行中描述的shell函数查找,第1b项.如果
command_name
它与其中一个特殊内置实用程序的名称相同,则不会出现特殊内置实用程序开头的枚举列表中的特殊属性.在其他方面,如果command_name
不是函数的名称,command
(没有选项)的效果应与省略相同command
.使用
-v
or-V
选项时,command
实用程序应提供有关shell如何解释命令名称的信息.
2008/2013版本中没有列出可选标志.在较旧的(2004)标准中,-v
和-V
选项是"用户可移植性"子集的一部分,而不是核心的一部分.
因此,如果他们想要符合十多年前的标准,就不需要-v
或者-V
; 如果他们想要符合现行标准(超过5年),则应支持这些选项.