Cuando ejecuto un programa sin especificar la ruta completa al ejecutable, y Bash debe buscar los directorios en $PATH
para encontrar el binario, parece que Bash recuerda la ruta en algún tipo de caché. Por ejemplo, instalé una compilación de Subversion desde la fuente a /usr/local
, luego escribió svnsync help
en el aviso de Bash. Bash localizó el binario /usr/local/bin/svnsync
para "svnsync" y lo ejecutó. Luego, cuando eliminé la instalación de Subversion en /usr/local
y volvió a ejecutar svnsync help
, Bash responde:
bash: /usr/local/bin/svnsync: No such file or directory
Pero, cuando inicio una nueva instancia de Bash, encuentra y ejecuta /usr/bin/svnsync
.
¿Cómo borro la caché de rutas a ejecutables?
Respuesta aceptada:
bash
almacena en caché la ruta completa a un comando. Puede verificar que el comando que está tratando de ejecutar tiene un hash con el type
comando:
$ type svnsync
svnsync is hashed (/usr/local/bin/svnsync)
Para borrar todo el caché:
$ hash -r
O solo una entrada:
$ hash -d svnsync
Para obtener información adicional, consulte help hash
y man bash
.