我正在使用豪华测试我的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"用户可移植性"子集规范的任何部分:
概要
Run Code Online (Sandbox Code Playgroud)command [-p] command_name [argument...] command [-p][-v|-V] command_name描述
该
command实用程序将使shell将参数视为一个简单的命令,从而抑制命令搜索和执行中描述的shell函数查找,第1b项.如果
command_name它与其中一个特殊内置实用程序的名称相同,则不会出现特殊内置实用程序开头的枚举列表中的特殊属性.在其他方面,如果command_name不是函数的名称,command(没有选项)的效果应与省略相同command.使用
-vor-V选项时,command实用程序应提供有关shell如何解释命令名称的信息.
2008/2013版本中没有列出可选标志.在较旧的(2004)标准中,-v和-V选项是"用户可移植性"子集的一部分,而不是核心的一部分.
因此,如果他们想要符合十多年前的标准,就不需要-v或者-V; 如果他们想要符合现行标准(超过5年),则应支持这些选项.