echo
a commencé dans Multics. Après avoir été programmé en C par Doug McIlroy comme un « exercice du doigt » et sest avéré utile, il est devenu une partie de la version 2 dUnix. echo -n
dans la version 7 a remplacé prompt
, (qui se comportait comme echo
mais sans arrêter sa sortie avec un séparateur de ligne).
Sur PWB / UNIX et versions ultérieures Unix System III, echo
a commencé à développer les séquences déchappement C telles que \n
avec la différence notable que les séquences déchappement octales étaient exprimées comme \0ooo
au lieu de \ooo
en C.
Huitième édition Unix echo
na fait lexpansion déchappement quaprès avoir passé une option -e
, et ce comportement a été copié par quelques autres implémentations telles que la commande intégrée echo
de Bash ou zsh et GNU echo
.
Sous MS-DOS, la commande est disponible dans les versions 2 et supérieures.
Aujourdhui, plusieurs implémentations incompatibles de echo
existent sur différents systèmes dexploitation (souvent plusieurs sur le même system), certains dentre eux développant des séquences déchappement par défaut, dautres non, certains acceptant des options (dont la liste varie avec les implémentations), dautres non.
La spécification POSIX de echo
laisse le comportement non spécifié si le premier argument est -n
ou tout argument contient des caractères anti-slash alors que la spécification Unix (option XSI dans POSIX) impose lexpansion de (certaines) séquences et ne permet aucun traitement doption. En pratique, de nombreuses implémentations de echo
ne sont pas conformes dans lenvironnement par défaut.
En raison de ces variations de comportement, echo
est considérée comme une commande non portable sur les systèmes de type Unix et la commande printf
(si disponible, introduite par Neuvième édition Unix) est préférée à la place.