Diferencia entre localizar y cuál en Linux


27

¿Cuál es la diferencia entre locatey whichen Linux?

¿Por qué cuando lo uso locate mentorenumera todos los mentores pero cuando lo uso which mentordice "no hay mentor en ..."? ¿Qué significa esto?



También hay wherey whereis.
Jan Tojnar

en bash, prefieren: type -all acommand. Y si leo el XYProblem detrás de su pregunta: tiene un comando, puede verlo a través de localizar, pero no puede ejecutarlo. luego edite RUTA, ya sea en el ~/.profilearchivo de su usuario específico , o si está convencido de que sabe qué hacer, en el /etc/profilearchivo global [ADVERTENCIA: puede romper los scripts del sistema (y posiblemente una gran parte del sistema operativo) si agrega la ruta incorrecta en el $ PATH de / etc / profile ... (por ejemplo: las rutas que contienen comandos generalmente se encuentran en otros lugares). Prefiero agregar solo al FINAL de la variable. Y por favor no ponga ::ni un . lugar en ese CAMINO.
Olivier Dulac

Respuestas:


45

¿Cuál es la diferencia entre locatey which?

locate utiliza una base de datos creada previamente para ubicar el archivo

locatelee una o más bases de datos preparadas por updatedb(8) y escribe nombres de archivos que coinciden con al menos uno de los PATRONES en la salida estándar, uno por línea.

Source localizar (1) - página de manual de Linux

updatedbcrea o actualiza una base de datos utilizada por locate(1). Si la base de datos ya existe, sus datos se reutilizan para evitar volver a leer directorios que no han cambiado.

updatedbPor lo general, se ejecuta diariamente por cron(8) para actualizar la base de datos predeterminada ( /var/lib/mlocate/mlocate.db)

Fuente actualizadab (8) - página de manual de Linux


whichbusca un archivo ejecutable buscándolo en los directorios de la PATHvariable de entorno.

whichtoma uno o más argumentos. Para cada uno de sus argumentos, se imprime en stdoutla ruta completa de los ejecutables que se habrían ejecutado cuando este argumento se hubiera ingresado en el indicador de comandos de la shell. Para ello, busca un archivo ejecutable o script en los directorios enumerados en la variable de entorno PATH.

usando el mismo algoritmo que bash(1).

Fuente que (1) - página de manual de Linux


locate mentorenumera el mentor, pero which mentordice "no hay mentor en ..."

Qué significa eso?

Tiene algunos archivos con nombre mentorque se pueden encontrar en la locatebase de datos.

No tiene un archivo ejecutable o script nombrado mentoren su PATH.


2
"updatedb": es bueno saber que no solo Microsoft presenta nombres demasiado específicos para las cosas. (En Win32, DeleteObjectelimina un objeto GDI, CloseHandlecierra un controlador de kernel, etc. updatedbActualiza de manera similar la base de locatedatos)
user253751

"which" también es específicamente útil en el caso de que pueda tener varias versiones del mismo programa dando vueltas en varios lugares en su ruta, por lo que le indica cuál se ejecuta realmente cuando ejecuta el comando. Esto me ha sido útil antes de diagnosticar un comportamiento inesperado; por ejemplo, me ayudó a darme cuenta de que había dejado una versión instalada manualmente de una utilidad en mi sistema de modo que estaba anulando la versión instalada por el administrador de paquetes.
Carcer

11

whiches ubicar un comando ( whichdevuelve un nombre de ruta de los archivos / enlaces que se ejecutarían en el entorno actual)

locatees buscar archivos por nombre ( locatelee una o más bases de datos preparadas updatedby escribe nombres de archivos que coinciden con al menos uno de los patrones de salida standed, uno por línea)


2
Proporcione la atribución de sus fuentes: las descripciones en su respuesta se toman directamente de las páginas del manual para esas utilidades.
Restablece a Monica iamnotmaynard el

5

locatetoma un patrón global de forma predeterminada (también se puede usar el patrón Regex) y busca en la base /var/lib/mlocate/mlocate.dbde datos cualquier nombre de archivo que coincida con el patrón.

whiches un comando para buscar la ruta completa de un comando en los directorios interpretados por la PATHvariable de entorno.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.