当前位置:  开发笔记 > 前端 > 正文

POSIX shell中是否需要`command -v`选项?豪华是否符合POSIX?

如何解决《POSIXshell中是否需要`command-v`选项?豪华是否符合POSIX?》经验,为你挑选了1个好方法。

我正在使用豪华测试我的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?



1> Jonathan Lef..:

这取决于他们兼容的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.

使用-vor -V选项时,command实用程序应提供有关shell如何解释命令名称的信息.

2008/2013版本中没有列出可选标志.在较旧的(2004)标准中,-v-V选项是"用户可移植性"子集的一部分,而不是核心的一部分.

因此,如果他们想要符合十多年前的标准,就不需要-v或者-V; 如果他们想要符合现行标准(超过5年),则应支持这些选项.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有