echo
è iniziato in Multics. Dopo essere stato programmato in C da Doug McIlroy come un “esercizio per le dita” e dimostrato di essere utile, è diventato parte della versione 2 di Unix. echo -n
nella versione 7 ha sostituito prompt
, (che si comportava come echo
ma senza terminare loutput con un delimitatore di riga).
Su PWB / UNIX e versioni successive Unix System III, echo
ha iniziato a espandere le sequenze di escape C come \n
con la notevole differenza che le sequenze di escape ottali erano espresse come \0ooo
invece di \ooo
in C.
Ottava edizione Unix echo
ha eseguito lespansione di escape solo quando è stata passata unopzione -e
e tale comportamento è stato copiato da alcune altre implementazioni come il comando incorporato echo
di Bash o zsh e GNU echo
.
Su MS-DOS, il comando è disponibile nelle versioni 2 e successive.
Al giorno doggi, esistono diverse implementazioni incompatibili di echo
su diversi sistemi operativi (spesso diverse sullo stesso sistema), alcuni di loro espandono le sequenze di escape per impostazione predefinita, altri no, alcuni di loro accettano opzioni (lelenco delle quali varia con le implementazioni), altri no.
La specifica POSIX di echo
lascia il comportamento non specificato se il primo argomento è -n
o qualsiasi argomento contiene caratteri backslash mentre la specifica Unix (opzione XSI in POSIX) impone lespansione di (alcune) sequenze e non consente lelaborazione di alcuna opzione. In pratica, molte echo
implementazioni non sono conformi nellambiente predefinito.
A causa di queste variazioni nel comportamento, echo
è considerato un comando non portabile su sistemi Unix-like ed è preferibile il comando printf
(dove disponibile, introdotto dalla Nona Edizione Unix).