¿"Qué" programa requiere Shell Refresh para ver los programas recién instalados?

¿"Qué" programa requiere Shell Refresh para ver los programas recién instalados?

¿Por qué el programa de Linux whichrequiere que actualice el shell (por ejemplo, escriba tcshen la terminal) para ver los nuevos programas instalados en su ruta?

Estaba desconcertado por qué no podía acceder a un programa que tenía los mismos permisos que otros programas usr/local/biny que whichpodía ver claramente.

¿Alguien puede explicarme cómo funciona esto en términos sencillos?

Respuesta1

Intentarrehash

man tcshdice

   rehash  Causes  the internal hash table of the contents of the directo-
           ries in the path variable to be recomputed.  This is needed  if
           new  commands  are  added  to directories in path while you are
           logged in.  This should be necessary only if you  add  commands
           to  one  of  your  own  directories, or if a systems programmer
           changes the contents of one of the  system  directories.   Also
           flushes the cache of home directories built by tilde expansion.

En términos sencillos: tcsh quiere proporcionar una respuesta ágil, por lo que crea una tabla interna (presumiblemente una tabla hash) de comandos y dónde se encuentran. Presumiblemente hace esto al inicio. Desafortunadamente, no tiene ningún mecanismo para notar cuando usted o un administrador hacen algo que requiera actualizar esa tabla.

Esta es una de las muchas razones por las que prefiero ksh o bash a los derivados de csh.

Respuesta2

$ which test
/usr/bin/test
$ ls ~/bin/test
ls: cannot access bin/test: No such file or directory
$ touch ~/bin/test
$ chmod 755 ~/bin/test
$ which test
/home/daniel/bin/test
$

No es necesario actualizar el shell usando Bash, por lo que no está relacionado en whichsí mismo. Debe haber otras variables en juego.

información relacionada