So if you were reading some internal bash scripts of Linux, you may have come across a command called “command” doing something like this:
if command -v script.sh; then
do stuff;
fi
Yes, the command is just called a “command”. So what is this “command”?
Usually, one would search with man pages like so:
# man command
But if you would do this, you would get an output as such:
-bash: man: command not found
If you would try something like:
# command -?
You would get an output as such:
# command -?
-bash: command: -? invalid option
command: usage: command [-pVv] command [arg ...]
This does give a hint that there is some usage with -v
as we have seen before. But nothing to be exact.
And if you would search its version, like so:
# command -v
It will output nothing at all.
So what is this “command”?
$ type command
command is a shell builtin
So the answer is, that “command” is not an external command. But it is a built-in feature of the shell, which is usually bash. One could use,
# help command
To see its details.
$ help command
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.
Options:
-p use a default value for PATH that is guaranteed to find all of
the standard utilities
-v print a description of COMMAND similar to the `type' builtin
-V print a more verbose description of each COMMAND
Exit Status:
Returns exit status of COMMAND, or failure if COMMAND is not found.
Or if you do:
# man bash
You would find an entry as such:
command [-pVv] command [arg ...]
Run command with args suppressing the normal shell function lookup. Only builtin commands or commands found
in the PATH are executed. If the -p option is given, the search for command is performed using a default
value for PATH that is guaranteed to find all of the standard utilities. If either the -V or -v option is
supplied, a description of command is printed. The -v option causes a single word indicating the command or
filename used to invoke command to be displayed; the -V option produces a more verbose description. If the -V
or -v option is supplied, the exit status is 0 if command was found, and 1 if not. If neither option is sup‐
plied and an error occurred or command cannot be found, the exit status is 127. Otherwise, the exit status of
the command builtin is the exit status of command.
in “SHELL BUILTIN COMMANDS” section.