echo
rozpoczęło się w Multics. Po zaprogramowaniu go w C przez Douga McIlroya jako „ćwiczenie na palec” i udowodnieniu jego użyteczności, stało się częścią wersji 2 Unix. echo -n
w wersji 7 zastąpił prompt
, (który zachowywał się jak echo
, ale bez przerywania jego wyjścia z separatorem linii).
Na platformie PWB / UNIX i nowszych Unix System III echo
zaczął rozszerzać sekwencje specjalne C, takie jak \n
z zauważalną różnicą, że ósemkowe sekwencje specjalne zostały wyrażone jako \0ooo
zamiast \ooo
w C.
Ósma edycja Unix echo
rozwinęła się dopiero po przekazaniu opcji -e
, a to zachowanie zostało skopiowane przez kilka innych implementacji, takich jak wbudowane echo
polecenie Bash lub zsh i GNU echo
.
W systemie MS-DOS polecenie jest dostępne w wersjach 2 i nowszych.
Obecnie kilka niekompatybilnych implementacji echo
istnieje w różnych systemach operacyjnych (często kilka w tym samym system), niektóre z nich domyślnie rozszerzają sekwencje specjalne, inne nie, niektóre akceptują opcje (których lista różni się w zależności od implementacji), a niektóre nie.
Specyfikacja POSIX echo
pozostawia zachowanie nieokreślone, jeśli pierwszy argument to -n
lub jakikolwiek argument zawiera znaki ukośnika odwrotnego, podczas gdy specyfikacja Unix (opcja XSI w POSIX) nakazuje rozwinięcie z (niektórych) sekwencji i nie pozwala na żadne przetwarzanie opcji. W praktyce wiele echo
implementacji nie jest zgodnych w środowisku domyślnym.
Z powodu tych różnic w zachowaniu echo
jest uważane za nieprzenośne polecenie w systemach uniksopodobnych, a zamiast tego preferowane jest polecenie printf
(jeśli jest dostępne, wprowadzone przez dziewiątą edycję Unix).