What is the difference between
which in Linux?
Why when I use
locate mentor does it list all the mentor but when I used
which mentor it says "no mentor in..." - what does this mean?
locate uses a previously built database to locate the file.
locatereads one or more databases prepared by
updatedb(8) and writes file names matching at least one of the PATTERNs to standard output, one per line.
Source locate(1) - Linux man page
updatedbcreates or updates a database used by
locate(1). If the database already exists, its data is reused to avoid rereading directories that have not changed.
updatedbis usually run daily by
cron(8) to update the default database (
Source updatedb(8) - Linux man page
which looks for an executable file by searching for it in the directories in the
PATH environmental variable.
whichtakes one or more arguments. For each of its arguments it prints to
stdoutthe full path of the executables that would have been executed when this argument had been entered at the shell prompt. It does this by searching for an executable or script in the directories listed in the environment variable
using the same algorithm as
Source which(1) - Linux man page
locate mentorlists mentor, but
which mentorsays "no mentor in..."
What does that mean?
You have some files named
mentor which can be found in the
You don't have an executable file or script named
mentor in your
which is to locate a command (
which returns a path name of the files / links that would be executed in the current environment)
locate is to find files by name (
locate reads one or more databases prepared by
updatedb and writes files names matching at least one of the patterns to standered output, one per line)
locate takes a glob pattern by default (Regex pattern can be used too) and searches the database
/var/lib/mlocate/mlocate.db for any filename matching the pattern.
which is a command to search for the full path of a command in the directories interpreted by the
PATH environment variable.