Você não está recebendo nenhum arquivo desses comandos porque eles são internos do shell ( bash
), não arquivos executáveis separados (por exemplo, arquivos binários, scripts). Na verdade, os shell-built-ins são compilados no executável do shell; Se você quiser, pode verificar o código-fonte para ter certeza disso. Como which
ou whereis
procura apenas por arquivos executáveis externos, você não está obtendo nenhuma saída para os internos.
Para saber se um comando é um alias ou uma função ou um arquivo externo, a melhor maneira é usar o type
embutido:
$ type fg
fg is a shell builtin
$ type bg
bg is a shell builtin
$ type jobs
jobs is a shell builtin
Observe também que o comando find
não está sintaticamente correto. A sintaxe correta (mais simples) é find /where/to/search -name 'name_to_search'
.
Observe também que alguns comandos são implementados como um shell embutido e um executável autônomo separado. Para esses comandos, lembre-se sempre de que o comando interno terá precedência sobre o externo. Portanto, quando você executar echo something
, o echo
interno será executado. Se você deseja executar o executável binário echo
, é necessário chamá-lo de uma maneira diferente. Uma maneira é usar o caminho completo para o executável: /bin/echo something
.
Para exibir todas as versões disponíveis de um comando, execute type
com a opção -a
:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
Para obter a documentação dos shell-built-ins, você pode verificar a página man
de bash
ou usar o comando help
(que é um comando interno):
help jobs
Além disso, como @terdon apontou você deve usar type
em vez de which
.