The s6-linux-init-echo program
s6-linux-init-echo writes its arguments to stdout.
s6-linux-init-echo [ -n ] [ -s sep ] args...
s6-linux-init-echo writes its arguments args to stdout, separated with spaces.
- -n : do not output a trailing newline.
- -s sep : separate arguments with the sep
character instead of a space.
- Strange, and appalling, as it may seem for such a simple task, there is
no way to ensure that the echo program will behave consistently from
Unix system to Unix system - and even from Linux distribution to Linux
distribution. Despite there being a
for it, the echo commands in GNU coreutils, busybox, toybox, sbase, and
other implementations basically all exhibit different behaviours. Every shell has
a built-in echo command, that fails to follow the POSIX standard. echo
is the prime example of the consequences of the blatant disregard of early Unices
for cross-system compatibility, and its followup as a turf war between GNU and the
rest of the Linux world. As a distribution-agnostic software developer, it is ironically
impossible to rely on a definite behaviour of the echo command on every
supported system, and that is why s6-linux-init provides its own implementation.
Fortunately, it is very easy to do so, with minimal overhead.
- This command is an exact duplicate of the
provided in the s6-portable-utils
package. It was decided not to have a dependency from s6-linux-init to
s6-portable-utils: that dependency would arguably be a higher cost than the small
amount of code duplication.