What is the difference between locate and 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?
What is the difference between locate and 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 and which?locate uses a previously built database to locate the file.
locatereads one or more databases prepared byupdatedb(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 bylocate(1). If the database already exists, its data is reused to avoid rereading directories that have not changed.
updatedbis usually run daily bycron(8) to update the default database (/var/lib/mlocate/mlocate.db)
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 tostdoutthe 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 variablePATH.
using the same algorithm as bash(1).
Source which(1) - Linux man page
locate mentor lists mentor, but which mentor says "no mentor in..."What does that mean?
You have some files named mentor which can be found in the locate database.
You don't have an executable file or script named mentor in your PATH.
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.