The whereis command locates the binary, source, and manual page files for a given command. Unlike which, it searches beyond $PATH, it checks hard-coded system paths and directories from environment variables.
The syntax is:
bashwhereis [OPTIONS] FILE_NAME...
Run without options to search for all three types at once:
bashwhereis bash
Output: bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
Each result shows the command name, binary path, source search matches, and man page path. Most commands do not have C source files installed. When whereis returns a file from the source search paths — like /etc/bash.bashrc — it found that file in the source directories, not the actual C source code.
If the command is not installed, whereis prints only the command name with no paths.
Check multiple commands at once by listing them as arguments:
bashwhereis netcat uptime
To see exactly which directories whereis searches, use -l:
bashwhereis -l
These search paths are NOT the same as $PATH. If whereis cannot find a command you know is installed, -l shows whether its location is covered.
Limit output to one type with:
-b – binary only-m – man page only-s – source files onlybashwhereis -b ping # binary only: /bin/pingwhereis -m bash # man page path only
When you only need the binary path, which or type are more focused. which searches $PATH; whereis -b searches the hard-coded system paths, they may return different results depending on how the command is installed.
Use -B, -M, or -S to restrict the directories whereis searches. The -f flag must come after the directory list to mark where the filenames begin:
bashwhereis -b -B /bin -f cp
Output: cp: /bin/cp
The -f flag is required. Omitting it causes an error.
The -u option finds “unusual” commands — those missing one or more of the requested file types. Use it to find commands in a directory that have no matching man page:
bashcd /binwhereis -m -u *
The * expands to all filenames in /bin. whereis checks each one and reports those with no man page entry.
Use whereis command for a three-type lookup, -b/-m/-s to narrow by type, and -m -u * to audit a directory for commands missing man pages. Leave a comment below if you run into any issues.
The sysctl command reads and modifies Linux kernel parameters from the command line. Changes take effect immediately…
git clone copies an existing Git repository into a new directory on your local machine. It…
The two main tools for copying files and directories in Linux are cp and rsync. cp handles quick, local file…
The jobs command is a Bash builtin that lists all background and suspended processes belonging to the…
The Linux kernel writes messages to the kernel ring buffer throughout the boot process and…
rsync over SSH combines secure encrypted transport with fast incremental transfers. Instead of copying every file…