来自 Bash 手册:
命令[-pVv]命令[论据...]
使用参数运行命令,忽略任何名为 command 的 shell 函数。仅执行 shell 内置命令或通过搜索 PATH 找到的命令。如果有一个名为 ls 的 shell 函数,在该函数内运行“command ls”将执行外部命令 ls,而不是递归调用该函数。 -p 选项意味着使用 PATH 的默认值,保证找到所有标准实用程序。如果找不到命令或发生错误,则这种情况下的返回状态为 127,否则为命令的退出状态。
手册是否解释了失败的原因命令是赋值还是以赋值开头(对于环境变量)?
$ command aaa=1
aaa=1: command not found
$ command aaa=1 echo hello
aaa=1: command not found
答案1
command
您对 POSIX 所谓的“简单命令”感到困惑,它是可选赋值、可选重定向和可选单词(包括命令名称及其可选参数)的非空序列,以及 Bash 手册概要中使用的“命令”这里只是一个命令名称。
如果您确实想在此处使用分配,您可以简单地运行:
aaa=1 command echo hello
如果根本没有命令而只是一个赋值,那么使用该command
命令就没有多大意义,因为事实上 PATH 中首先没有内置命令或命令可供搜索。
如果你真的想用 来设置一个变量command
,你可以使用
command typeset aaa=1
或者
command declare aaa=1
答案2
使用“let”命令(用于算术表达式)
简单赋值的命令形式aaa=1
是let aaa=1
。但是,这仅适用于算术表达式(不适用于字符串赋值):
$ command let aaa=1
$ echo $aaa
1
$ command let aaa=6*3+5
$ echo $aaa
23