¿Cuándo repetir los ejecutables en $ PATH con bash?

9

Bash Shell tiene un comando incorporado hash -rpara restablecer la $PATHmemoria caché interna de los ejecutables.

¿Cuándo es necesario usar este comando?

Relacionado: Cómo repetir ejecutables en $ PATH con bash

kevinarpe
fuente
1
... por ejemplo, cuando tiene un programa que acaba de compilar ... con el mismo nombre ... tal vez en un camino diferente ...
Hastur
@Hastur: No estoy seguro si tu comentario es una pregunta o una declaración. Si la declaración, por favor publique como respuesta.
kevinarpe

Respuestas:

7

hashes un comando incorporado bash. La tabla hash es una característica de bash que evita que tenga que buscar $ PATH cada vez que escribe un comando almacenando en caché los resultados en la memoria.

Por lo tanto, cuando la información almacenada / en caché ya no se actualice o sea válida, es posible que deba restablecerla.

Lea más sobre esta buena respuesta en Unix stackexchange .

Hastur
fuente
4

Si anteriormente ha ejecutado un programa en esa invocación de shell y luego instala otra versión de él en un directorio anterior en su $PATHlista de búsqueda, debe restablecer el hash para que lo encuentre en la nueva ubicación. De lo contrario, usará el caché para encontrar el programa en la ubicación anterior.

También debe restablecer el hash si un programa está instalado en 2 directorios en su $PATH, y elimina la copia de la ubicación anterior después de haberlo ejecutado. De lo contrario, intentará encontrarlo en esa ubicación e informará "No existe tal archivo o directorio" (personalmente, creo que debería borrar automáticamente el hash y hacer una búsqueda completa cuando eso suceda, pero no sucedió cuando lo intenté )

Tenga en cuenta que en realidad no tiene que restablecer todo el hash, puede usar:

hash name

para forzarlo a actualizar la entrada de caché solo para ese nombre, o:

hash -d name

para eliminar solo esa entrada de caché. Estos dejan todas las demás entradas de caché en paz.

No es necesario usar hash -rdespués de modificar $PATH, se restablece automáticamente cuando se hace esto.

Barmar
fuente
Buen punto sobre la parte de instalación y el punto en su camino.
kevinarpe