"qual" programa requer atualização do Shell para ver os programas recém-instalados?

"qual" programa requer atualização do Shell para ver os programas recém-instalados?

Por que o programa Linux whichexige que você atualize o shell (por exemplo, digite tcshno terminal) para ver os novos programas instalados em seu caminho?

Fiquei perplexo porque não consegui acessar um programa que tinha as mesmas permissões de outros programas no usr/local/bin, que whichpodia ver claramente.

Alguém pode explicar como isso funciona para mim em termos leigos?

Responder1

Tentarrehash

man tcshdiz

   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.

Em termos leigos: o tcsh deseja fornecer uma resposta rápida, por isso constrói uma tabela interna (presumivelmente uma tabela hash) de comandos e onde eles podem ser encontrados. Presumivelmente, isso acontece na inicialização. Infelizmente, ele não possui nenhum mecanismo para perceber quando você ou um administrador fazem algo que precisaria que a tabela fosse atualizada.

Esta é uma das muitas razões pelas quais prefiro ksh ou bash aos derivados csh.

Responder2

$ 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
$

Nenhuma atualização de shell é necessária usando o Bash, portanto, não está relacionado por whichsi só. Deve haver outras variáveis ​​em jogo.

informação relacionada