command 命令
用途
执行简单命令。
语法
command [-p] command_name [argument...]
command [-p] [-v|-V ] command_name描述
command 命令导致 shell 将指定的命令和变量视为简单命令,禁止了 shell 功能查询。
通常,当 /(斜杠)不在命令(表示特定的路径)之前时,shell 通过搜索以下类别找到命令:
- 特殊 shell 内置
- shell 函数
- 常规 shell 内置
- PATH 环境变量
例如,如果存在具有与常规的内置相同名称的函数,那么系统使用该函数。 command 命令允许您调用具有与某个函数相同名称的命令,并获取简单命令。
command -v 和 command -V 命令将由 shell 使用的路径名以及 shell 如何解释命令类型(内部构件、函数、别名,等等)写到标准输出。 由于 -v 和 -V 标志产生与当前 shell 环境相关的输出,所以提供 command 命令作为 korn shell 程序或 POSIX shell 的常规的内置命令。 由于 /usr/bin/command 命令在子 shell 程序或独立命令执行环境中调用,所以它可能不产生正确的结果。 在以下示例中,shell 不能标识别名、子例程或特殊shell 命令:
(PATH=foo command -v)
nohup command -v标志
| 项 | 描述 |
|---|---|
| -p | 使用 PATH 环境变量的缺省值执行命令搜索,即,查找所有标准命令。 |
| -v | 根据以下约定,将由当前 shell 使用的路径名称写到标准输出以调用指定的命令:
如果找不到指定的命令名,那么不会写入任何输出,并且退出状态会返回 > 0 值。 |
| -V | 将由当前 shell 环境解释的命令名写到标准输出。 虽然未指定此输出的格式,但输出表示命令在以下哪一个目录中:
|
退出状态
当指定 -v 或 -V 标志,那么返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| > 0 | 找不到使用 command_name 参数指定的命令或发生错误。 |
当未指定 -v 或 -V 标志时,返回以下退出值:
| 项 | 描述 |
|---|---|
| 126 | 找到了由 command_name 参数指定的命令,但无法调用该命令。 |
| 127 | 在 command 命令中发生错误,或者找不到由 command_name 参数指定的命令。 |
否则, command 命令返回与 command_name 参数指定的命令相关联的退出状态。
示例
- 要生成每当更改目录时打印出新工作目录的 cd 命令版本,请输入:
cd () { command cd "$@" >/dev/null pwd } - 要启动安全 shell 脚本 (其中脚本避免被其父代破坏) ,请输入:
在此处,给出由 PATH 环境变量调用的目录的正确权限,该脚本具有确保其调用的任何命令都是计划的命令的能力。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. # ...
文件
| 项 | 描述 |
|---|---|
| /usr/bin/ksh | 包含 Korn shell 程序 command 内置命令。 |
| /usr/bin/command | 包含 command 命令。 |