Cuando lo hago
which pip3
yo obtengo
/usr/local/bin/pip3
pero cuando intento ejecutar pip3
me sale el siguiente error:
bash: /usr/bin/pip3: No such file or directory
Esto se debe a que recientemente eliminé ese archivo. Ahora el which
comando apunta a otra versión de la pip3
que se encuentra /usr/local/bin
pero el shell aún recuerda la ruta incorrecta. ¿Cómo hago que se olvide de ese camino?
El which
manual dice
which returns the pathnames of the files (or links) which would be executed in the current environment, had its arguments been given as commands in
a strictly POSIX-conformant shell. It does this by searching the PATH for executable files matching the names of the arguments. It does not follow
symbolic links.
Ambos /usr/local/bin
y /usr/bin
están en mi PATH
variable, y /usr/local/bin/pip3
no es un enlace simbólico, es un ejecutable. Entonces, ¿por qué no se ejecuta?
/usr/local/bin/pip3
?pip3
en ese shell mientras estaba dentro/usr/bin
y luego lo movió?hash -t pip3
?hash -t pip3
imprime/usr/bin/pip3
type
eather thanwhich
.type
está integrado en un shell posix y le dice lo que hará un shell, en lugar de lowhich
que intenta adivinar qué hará el shell.Respuestas:
Cuando ejecute un comando en
bash
él, recordará la ubicación de ese ejecutable para que no tenga que buscarloPATH
nuevamente cada vez. Entonces, si ejecuta el ejecutable, luego cambie la ubicación,bash
aún intentará usar la ubicación anterior. Debería poder confirmar esto conhash -t pip3
lo que mostrará la ubicación anterior.Si lo ejecuta
hash -d pip3
, le dirá a bash que olvide la ubicación anterior y debería encontrar la nueva la próxima vez que lo intente.fuente
hash -r
para limpiar toda la mesa.which
.help
lugar de man, así que aquíhelp hash
type hash
le dirá que es un shell incorporado, por lo que no tiene su propia página de manual. En su lugar, usehelp hash
o busquehash
en la página de manual de bash.man
... ya quehash
es unbash
incorporado, querrásman bash
encontrarlo. Pero lo que dice la página del manual es esencialmente lohelp hash
que dice bash.