echo
comenzó dentro de Multics. Después de que fue programado en C por Doug McIlroy como un «ejercicio de dedos» y demostró ser útil, se convirtió en parte de la Versión 2 de Unix. echo -n
en la Versión 7 reemplazó a prompt
, (que se comportaba como echo
pero sin terminar su salida con un delimitador de línea).
En PWB / UNIX y posterior Unix System III, echo
comenzó a expandir secuencias de escape de C como \n
con la notable diferencia de que las secuencias de escape octales se expresaron como \0ooo
en lugar de \ooo
en C.
Octava edición Unix echo
solo hizo la expansión de escape cuando se le pasó una opción -e
, y ese comportamiento fue copiado por algunas otras implementaciones como el comando interno echo
de Bash o zsh y GNU echo
.
En MS-DOS, el comando está disponible en las versiones 2 y posteriores.
Actualmente, existen varias implementaciones incompatibles de echo
en diferentes sistemas operativos (a menudo varias en el mismo system), algunos de ellos expandiendo las secuencias de escape de forma predeterminada, algunos de ellos no, algunos de ellos aceptan opciones (cuya lista varía con las implementaciones), algunos de ellos no.
La especificación POSIX de echo
deja el comportamiento sin especificar si el primer argumento es -n
o cualquier argumento contiene caracteres de barra invertida mientras que la especificación Unix (opción XSI en POSIX) exige la expansión de (algunas) secuencias y no permite ningún procesamiento de opciones. En la práctica, muchas echo
implementaciones no cumplen con el entorno predeterminado.
Debido a estas variaciones en el comportamiento, echo
se considera un comando no portátil en sistemas similares a Unix y en su lugar se prefiere el comando printf
(donde esté disponible, introducido por la novena edición de Unix).