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 .