O Bash mantém uma tabela em que armazena em cache o caminho completo dos executáveis - veja, por exemplo, o link . Na primeira vez que você invocar /bin/cat
em uma sessão de Bash, o caminho completo para ele será armazenado nessa tabela. O tempo segundo em que você executa /bin/cat
, Bash na verdade não pesquisa o caminho de pesquisa novamente. De certa forma, isso é rápido e imediato.
Você pode até mesmo usar o hash
(Bash) embutido da maneira como é explicado em essa resposta legal , para armazenar em cache o caminho completo para o executável pandoc:
hash -p ~/.cabal/bin/pandoc pandoc
De help hash
:
hash: hash [-lr] [-p pathname] [-dt] [name ...]
Remember or display program locations.
Determine and remember the full pathname of each command NAME. If
no arguments are given, information about remembered commands is displayed.
Options:
-d forget the remembered location of each NAME
-l display in a format that may be reused as input
-p pathname use PATHNAME is the full pathname of NAME
-r forget all remembered locations
-t print the remembered location of each NAME, preceding
each location with the corresponding NAME if multiple
NAMEs are given
Arguments:
NAME Each NAME is searched for in $PATH and added to the list
of remembered commands.
Exit Status:
Returns success unless NAME is not found or an invalid option is given.