You need to use the find command, which is used finding files on Linux or Unix-like system. Another option is the the locate command to search through a prebuilt database of files generated by updatedb. However, the find command will search live file-system for files that match the search criteria.
Linux / UNIX: Determine where a binary command is stored / located on file system. You can use “type” or “whereis” command to find out which command shell executes and to print binary (command) file location for specified command.
To determine the exact location of your current directory within the file system, go to a shell prompt and type the command pwd. This tells you that you are in the user sam's directory, which is in the /home directory. The command pwd stands for print working directory.
If you're using Bash or zsh, use this:
type -a lshw
This will show whether the target is a builtin, a function, an alias or an external executable. If the latter, it will show each place it appears in your PATH
.
bash$ type -a lshw
lshw is /usr/bin/lshw
bash$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
bash$ zsh
zsh% type -a which
which is a shell builtin
which is /usr/bin/which
In Bash, for functions type -a
will also display the function definition. You can use declare -f functionname
to do the same thing (you have to use that for zsh, since type -a
doesn't).
Like this:
which lshw
To see all of the commands that match in your path:
which -a lshw
PATH
is an environment variable, and can be displayed with the echo command:
echo $PATH
It's a list of paths separated by the colon character ':
'
The which
command tells you which file gets executed when you run a command:
which lshw
sometimes what you get is a path to a symlink; if you want to trace that link to where the actual executable lives, you can use readlink
and feed it the output of which
:
readlink -f $(which lshw)
The -f
parameter instructs readlink
to keep following the symlink recursively.
Here's an example from my machine:
$ which firefox
/usr/bin/firefox
$ readlink -f $(which firefox)
/usr/lib/firefox-3.6.3/firefox.sh
~$ echo $PATH
/home/jack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
~$ whereis lshw
lshw: /usr/bin/lshw /usr/share/man/man1/lshw.1.gz
In the TENEX C Shell, tcsh, one can list a command's location(s), or if it is a built-in command, using the where
command e.g.:
tcsh% where python
/usr/local/bin/python
/usr/bin/python
tcsh% where cd
cd is a shell built-in
/usr/bin/cd
An alternative to type -a
is command -V
Since most of the times I am interested in the first result only, I also pipe from head. This way the screen will not flood with code in case of a bash function.
command -V lshw | head -n1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With