手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

command(1)

名称

command - 执行简单命令

用法概要

/usr/bin/command

command [-p] command_name [argument]...
command [-v | -V] command_name

ksh

command [-pvxV] [command_name [argument...]]

描述

command 实用程序可使 shell 将参数当作简单命令,禁止 shell 查找函数。

如果 command_name 与某个特殊内置实用程序的名称相同,则将删除相应的特殊属性。在其他任何方面,如果 command_name 不是函数的名称,则 command(不带选项)的作用与省略 command 相同。

command 实用程序还可提供有关 shell 如何解释命令名称的信息。请参见 –v–V

ksh

如果不使用 –v–V 选项,command 将根据 argument 指定的参数执行 command_name,禁止通常执行的 shell 查找函数。此外,如果 command 是特殊内置命令,则将删除相应的特殊属性,以使失败不会导致执行命令的脚本终止。

如果指定了 –v–V 选项,command 等效于 whence(1)

选项

/usr/bin/command 支持以下选项:

–p

使用 PATH 的缺省值执行搜索命令,保证可找到所有标准实用程序。

–v

将一个字符串写入标准输出,指明 shell 在当前 shell 执行环境中调用 command_name 但不调用 command_name 所用的路径或命令。

  • 实用程序、常规内置实用程序、command_names(包括斜杠字符)和任何实现程序提供的使用 PATH 变量的函数将作为绝对路径名称写入。

  • Shell 函数、特殊内置实用程序、不与 PATH 搜索关联的常规内置实用程序和 shell 保留字只作为其名称写入。

  • 别名作为表示别名定义的命令行写入。

  • 否则,不会写入任何输出,退出状态将反映未找到名称。

–V

将一个字符串写入标准输出,指明 shell 在当前 shell 执行环境中不调用 command_name 的情况下如何解释 command_name 操作数中指定的名称。尽管该字符串的格式未指定,但是它指明了 command_name 属于以下哪种类别,并且包含规定的信息:

  • 实用程序、常规内置实用程序和任何实现程序提供的使用 PATH 变量的函数解释为其本身,在字符串中包含绝对路径名称。

  • 其他 shell 函数解释为函数。

  • 别名解释为别名,在字符串中包含其定义。

  • 特殊内置实用程序解释为特殊内置实用程序。

  • 不与 PATH 搜索关联的常规内置实用程序解释为常规内置实用程序。

  • Shell 保留字解释为保留字。

ksh

ksh command 支持以下选项:

–p

搜索缺省路径而非 PATH 的值定义的路径。

–v

等效于:

whence command [argument ...]
–V

等效于:

whence -v command [argument ...]
–x

如果因参数过多而命令失败,将多次调用命令,每次调用传递一部分参数。每次调用时,将会传递在扩展到多个参数的第一个词之前以及在扩展到多个参数的最后一个词之后出现的参数。退出状态为最大调用退出状态。

操作数

支持下列操作数:

argument

当作 command_name 的参数的字符串之一。

command_name

实用程序或特殊内置实用程序的名称。

示例

示例 1 创建一个始终输出新工作目录的 cd 版本

以下示例将创建一个始终只输出新工作目录一次的 cd 版本:


cd() {
	command cd "$@" >/dev/null
	pwd
}
示例 2 启用使脚本避免受父项欺骗的安全 shell 脚本

以下示例将启用使脚本避免受父项欺骗的安全 shell 脚本


IFS='
'
#	The preceding value should be <space><tab><newline>.
#	Set IFS to its default value.
\unalias -a
#	Unset all possible aliases.
#	Note that unalias is escaped to prevent an alias
#	being used for unalias.
unset -f command
#	Ensure command is not a user function.
PATH="$(command -p getconf _CS_PATH):$PATH"
#	Put on a reliable PATH prefix.
#	...

在这种情况下,如果对 PATH 指定的目录具有适当的权限,则脚本可确保调用的任何实用程序都是打算调用的那个。这样做非常谨慎,因为假定可以存在实现扩展,就会在调用脚本时存在用户函数。该功能并未在本文档中指定,但是并不禁止将其作为扩展功能。例如,ENV 变量在调用脚本之前调用用户启动脚本。此类脚本可以定义用来欺骗应用程序的函数。

环境变量

有关影响 command 执行的以下环境变量的描述,请参见 environ(5):LANG、LC_ALL、LC_CTYPE、LC_MESSAGES 和 NLSPATH。

PATH

确定命令搜索期间使用的搜索路径,–p 选项下所述的除外。

退出状态

/usr/bin/command

如果指定了 –v–V 选项,将返回以下退出值:

0

成功完成。

>0

无法找到 command_name 或出现错误。

否则,将返回以下退出值:

126

command_name 指定的实用程序已找到但无法调用。

127

command 实用程序出现错误或无法找到 command_name 指定的实用程序。

否则,command 的退出状态将为 command 的参数指定的简单命令的退出状态。

ksh

如果调用了 command,则 command 的退出状态将为 command 的退出状态。否则,将为以下状态之一:

0

command_name 已成功完成。

>0

–v–V 已指定但出现错误。

126

command_name 已找到但无法调用。

127

无法找到 command_name

属性

有关下列属性的说明,请参见 attributes(5)

/usr/bin/command

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)
标准
请参见 standards(5)

ksh

属性类型
属性值
可用性
system/core-os
接口稳定性
Uncommitted(未确定)

另请参见

ksh(1)sh(1)type(1)whence(1)attributes(5)environ(5)standards(5)