Por ejemplo:
$ node
-bash: /usr/local/bin/node: No such file or directory
$ foo
-bash: foo: command not found
¿Cual es la diferencia? En ambos casos, nodey fooson comandos no válidos, pero parece que Unix simplemente no puede encontrar el nodebinario? Al desinstalar un programa, por ejemplo node, ¿hay alguna manera de limpiar esto para que pueda
$ node
-bash: node: command not found
EDITAR:
Resultados del typecomando:
$ type node
node is hashed (/usr/local/bin/node)
$ type foo
-bash: type: foo: not found

type nodeytype foo(aunque probablemente solo el primero sea realmente útil).Respuestas:
Eso es porque
bashrecordó la ubicación de su comando, guárdelo en una tabla hash .Después de la desinstalación
node, la tabla hash no se borra,bashtodavía piensa quenodeestá en/usr/local/bin/node, omitiendo laPATHbúsqueda y llamando/usr/local/bin/nodedirectamente, usandoexecve(). Dado que cuandonodeya no existe,execve()devuelve elENOENTerror, significa que no hay tal archivo o directorio, lebashinformó ese error.En
bash, puede eliminar una entrada de la tabla hash:o elimine la tabla hash completa ( funciona en todos los shell POSIX ):
fuente
/usr/local/bin/nodeque falta; si ese archivo es un ejecutable vinculado dinámicamente y falta una de las dependencias, recibirá el mismo mensaje "No existe tal archivo o directorio". Esto puede volverte loco hasta que pruebeslddese archivo.progname: error while loading shared libraries: badLib.so.1: cannot open shared object file: No such file or directory(o podría no ser bash en este caso en particular, perold-linux.so).execveescrito a stderr como efecto secundario en caso de fallo probablemente violaría POSIX o algo así)/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory.En Ubuntu Linux 16.04 encontré que "No existe tal archivo o directorio" significa que debe cambiar su directorio de trabajo actual, mientras que "comando no encontrado" significa que debe usar apt-get install xxxyyy_zzz para solucionar el problema.
fuente