echo() {
command echo -n "$@"
}
Usar command aqui significa pedir o comando echo (que por acaso é construído aqui) em vez da função que, de outra forma, teria precedência.
E, como aqui, echo também é construído (não é consultado em $PATH BTW, pois os recursos internos têm precedência sobre os comandos do sistema de arquivos), você também pode fazer:
echo() {
builtin echo -n "$@"
}
Essa última abordagem é preferível em zsh , em que command echo executaria /bin/echo (exceto em sh emulação).
Existem algumas variações sutis entre os shells, mas a ordem de precedência é geralmente:
- especiais incorporados
- funções
- builtins
- comandos em
$PATH(e a ordem depende da ordem em$PATHe na tabelahashconforme gerenciada pelohashbuiltin)
Tendo em mente que alias e palavras-chave na sintaxe do shell ( for , if ...), quando não citados, são considerados antes desses.
A ordem de 1 e 2 é revertida em alguns shells como bash ou zsh . bash não permite que funções sejam definidas com o mesmo nome de um especial embutido quando chamado como sh .