Você pode usar o command
shell interno para ignorar o processo de pesquisa normal e executar o comando fornecido como um comando externo, independentemente de outras possibilidades (embutidos do shell, aliases, etc.). Isso geralmente é feito em scripts que precisam ser portáveis entre sistemas, embora provavelmente seja mais comum usar a abreviação \
(como em \rm
vez de command rm
ou ou rm
, pois, especialmente, o último pode estar associado a algo não conhecido rm -i
).
$ time
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ command time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--quiet] [--help] command [arg...]
$
Isso pode ser usado com um alias, assim:
$ alias time='command time'
$ time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
[--portability] [--format=format] [--output=file] [--version]
[--quiet] [--help] command [arg...]
$
A vantagem disso, por exemplo, alias time=/usr/bin/time
é que você não está especificando o caminho completo para o time
binário, mas retornando ao mecanismo de busca de caminho usual.
O alias
comando em si pode entrar em, por exemplo, ~ / .bashrc ou /etc/bash.bashrc (este último é global para todos os usuários do sistema).
Para o caso oposto (forçando o uso do shell interno, caso haja um apelido definido), você usaria algo como builtin time
, que novamente substitui o processo de pesquisa usual e executa o shell interno nomeado. A página de manual do bash menciona que isso geralmente é usado para fornecer cd
funcionalidade personalizada com uma função chamada cd
, que por sua vez usa o builtin cd
para fazer a coisa real.
type -a <cmd>
.