(Note que esta é uma questão inteiramente acadêmica ... Estou apenas curioso sobre a resposta, não tentando resolver nenhum problema em particular.)
Na página de manual ECHO(1)
(GNU echo
):
NOTE: your shell may have its own version of echo, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.
Na página de manual ECHO(1)
(BSD echo
):
Some shells may provide a builtin echo command which is similar or identical to this utility. Most notably, the builtin echo in sh(1) does not accept the -n option. Consult the builtin(1) manual page.
Ao executar echo
do shell, um comando interno é executado, mas especificando um caminho completo, por exemplo, /bin/echo
, o programa externo é executado.
Qual é a justificativa para que o próprio shell implemente esse comando em particular. Definitivamente, existem comandos que devem ser implementados pelo shell (por exemplo, cd
, read
, etc.), mas por que echo
? É porque é usado com tanta frequência e a economia de tempo para evitar configurações de processo e comutadores de contexto é mensurável - especialmente historicamente?
Ignorando o fato de que, por exemplo bash
tem um grande número de recursos não estritamente necessários, por que coisas como expr
, [
/ test
, mkdir
, rmdir
, etc. não fazem isso se a velocidade fator foi importante? Coisas como mkdir
e rmdir
, cuja implementação é quase literalmente uma única chamada para uma função libc
, parecem ser candidatos óbvios à inclusão.