Em vez de usar which
, que não trabalhe quando precisar mais , use type
para determinar o que será executado quando você digitar um comando:
$ which set
./set
$ type set
set is a shell builtin
O shell sempre procura por buildins antes de pesquisar o $PATH
, então definir $PATH
não ajuda aqui.
Seria melhor renomear seu executável para outra coisa, mas se sua atribuição exigir que o programa seja nomeado set
, você poderá usar uma função de shell:
$ function set { ./set; }
$ type set
set is a function
set ()
{
./set
}
(Isso funciona em bash
, mas outros shells como ksh
podem não permitir. Veja a resposta do mikeserv para uma solução mais portátil.)
Agora, digitar set
executará a função chamada "set", que executa ./set
. O GNU bash
procura por funções antes de procurar por builtins, e procura por builtins antes de pesquisar o $PATH
. A seção chamada "COMMAND EXECUTION" na página man bash fornece mais informações sobre isso.
Veja também a documentação sobre builtin
e command
: help builtin
e help command
.