根据help command
,在 bash 的帮助下,command
可以用来触发外部程序 x,如果 x 也作为内置函数存在:
command: command [-pVv] command [arg ...]
Execute a simple command or display information about commands.
Runs COMMAND with ARGS suppressing shell function lookup, or display
information about the specified COMMANDs. Can be used to invoke commands
on disk when a function with the same name exists.
当使用 进行测试时time
,这按预期工作并使用外部程序/bin/time
,但是当我尝试时:
command echo --help
# the output is
--help
这是内置的预期行为echo
。
使用 xubuntu 22.04,bash 5.1.16/bin/echo --help
按预期工作。
我是否误解了该command
命令?或者为什么它不像宣布的那样工作?我怎样才能找到答案?
GNU bash, Version 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
它确实像宣布的那样工作:它抑制shell 函数查找,而不是内置查找。的效果
time
具有误导性:time
是保留字,而不是内置字,并且仅出现在管道的开头。在 中command time
,管道由 启动command
,因此它唯一time
可以执行的是外部管道。要查看差异,请定义一个函数:
并
echo
与进行比较command echo
。(您可以使用 删除该功能unset -f echo
。)要查看某物是什么,请使用
type
: