在 bash 中,为什么 history -s "- "、history -s '- ' 会出现错误?

在 bash 中,为什么 history -s "- "、history -s '- ' 会出现错误?

bash 版本 5.2.15(1)-发布(i686-pc-linux-gnu)

如下所示,没有给出任何错误消息:

history -s "-"

history -s -- "- "

但以下几行给出错误:

history -s "- "

history -s '- '

(在参数字符串中:破折号后跟 BLANK)

错误信息是

bash: history: - : invalid option

这就像 bash 会解析 bash 选项的参数字符串一样。

但是如果有 bash 选项,例如

history -s "-p "

该选项不被接受,给出相同的错误消息

bash: history: - : invalid option

问候

答案1

与大多数 shell 命令和工具一样,--表示“选项结束”。因此,如果没有--,命令确实会尝试将参数解析为其自己的选项。

'-p '不是 bash 选项。如果没有--,则因为-p不接受值,所以它被解释为两个选项,-p"- ",其中第二个选项无效 - 如错误消息中所述。这只是像使用 一样堆叠选项history -sp

相关内容