echo
começou no Multics. Depois de ter sido programado em C por Doug McIlroy como um “exercício de dedo” e provado ser útil, ele se tornou parte da Versão 2 do Unix. echo -n
na versão 7 substituiu prompt
, (que se comportou como echo
, mas sem encerrar sua saída com um delimitador de linha).
No PWB / UNIX e posterior Unix System III, echo
começou a expandir sequências de escape C, como \n
com a diferença notável de que as sequências de escape octal foram expressas como \0ooo
em vez de \ooo
em C.
Oitava edição Unix echo
só fez a expansão de escape quando passou uma opção -e
, e esse comportamento foi copiado por algumas outras implementações, como o comando echo
embutido do Bash ou zsh e GNU echo
.
No MS-DOS, o comando está disponível nas versões 2 e posteriores.
Hoje em dia, várias implementações incompatíveis de echo
existem em diferentes sistemas operacionais (muitas vezes vários no mesmo sistema), alguns deles expandindo sequências de escape por padrão, alguns deles não, alguns deles aceitando opções (a lista varia com as implementações), alguns deles não.
A especificação POSIX de echo
deixa o comportamento não especificado se o primeiro argumento for -n
ou qualquer argumento contiver caracteres de barra invertida enquanto a especificação Unix (opção XSI em POSIX) exige a expansão de (algumas) sequências e não permite o processamento de qualquer opção. Na prática, muitas echo
implementações não são compatíveis com o ambiente padrão.
Devido a essas variações de comportamento, echo
é considerado um comando não portátil em sistemas semelhantes ao Unix e o comando printf
(quando disponível, introduzido pela Nona Edição Unix) é preferível.