Tenga en cuenta que esto no es un duplicado. Estoy preguntando sobre deshabilitar el caché, no borrarlo. Si tiene que borrar un caché, obviamente no está deshabilitado.
En las raras ocasiones en que noto la memoria caché de bash de cosas que ha encontrado en el camino, no es porque sea útil, es porque es muy molesto. Un ejemplo:
~ dc$ export PATH=$HOME/bin:$PATH
~ dc$ cat bin/which
#!/bin/bash
echo "my which"
~ dc$ which
my which
~ dc$ rm bin/which
~ dc$ which which
-bash: /Users/dc/bin/which: No such file or directory
En otro caparazón ...
~ dc$ which which
/usr/bin/which
Estoy seguro de que este almacenamiento en caché tenía sentido en los viejos tiempos, cuando los discos eran lentos y la memoria era costosa y limitada, por lo que no podía almacenar mucho en caché: el almacenamiento en caché de una ruta es más barato que el almacenamiento en caché de todos los bloques de disco necesarios para encontrar un comando . Pero en estos días no proporciona ningún beneficio notable y causa más problemas de los que resuelve. Es un error, rayando en ser un error.
Y ni siquiera puedo encontrar una manera de desactivarlo. Cualquier puntero?
/usr/bin
queda completamente en caché.set +h
para deshabilitar el hashing.Respuestas:
Puede borrar los ejecutables hash antes de que se dibuje el mensaje:
De
help hash
:fuente
set +h
set +h
no es ideal, ya que muchas utilidades (por ejemplo, instalaciones de gemas de rubí) llamanhash
, produciendo flujos de-bash: hash: hashing disabled
advertencias.Puede forzar a bash a hacer una nueva búsqueda de ruta en caso de que un comando en la tabla hash ya no exista.
De la página de manual de bash:
Ejemplo:
fuente