You can use
command -v. The output of
type is human readable; the output of
command -v can be executed by Bash.
Note that they are actually a little different.
command look up the hashed value of the command. That is to say, if you type
type cmd or
command -v cmd will tell you exactly what will be run. They also work on aliases, Bash functions, and Bash builtins (although
type -p will ignore these and only return true files).
which just does a search on the PATH. This is different because:
- If there is an alias, function, or builtin with the same name, it will be called instead.
- If a command was added earlier in the PATH since it was last hashed, it will be found by
which, but executing that command will use the hashed value (you can force update the hash in Bash with
Usually people really want
which, at least for interactive use, as they use it to find out "where is this command coming from when I run it?" You should only use
which if you really want to do a PATH lookup.