tee(1) on Solnix vs Linux and the BSDs
On Solnix, tee is the illumos /usr/bin/tee, which supports -a and -i like the BSDs and Linux. The ksh93 built-in adds -l and long options, and Linux tee adds -p and --output-error, which Solnix lacks.
The manual pages
- Solnix: tee(1) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: tee(1) coreutils-full-9.11
- FreeBSD: tee(1) 15.1-RELEASE
- OpenBSD: tee(1) 8.0
- NetBSD: tee(1) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
tee
What Solnix runs
A default Solnix system runs the illumos /usr/bin/tee, which accepts only -a and -i. The page also documents a ksh93 built-in tee, used when tee is run without a path prefix and the path search finds /bin/tee or /usr/bin/tee. It adds -l/--line-buffer and the long forms --append and --ignore-interrupts. No other variants are shipped.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| Linux | -p and --output-error | Linux (GNU) tee has -p and --output-error[=MODE] to set behaviour on write errors. The Solnix /usr/bin/tee and the ksh93 built-in document neither option. Linux without them exits immediately on a write error to a pipe and diagnoses errors on non-pipe outputs.Source: Linux tee(1) -p, --output-error, MODE; Solnix tee(1) SYNOPSIS and OPTIONS |
| all four | -l line buffering (ksh93 built-in) | The Solnix ksh93 built-in tee has -l/--line-buffer to line-buffer standard output. Linux, FreeBSD, OpenBSD and NetBSD tee have no such option, and /usr/bin/tee on Solnix does not either.Source: Solnix tee(1) OPTIONS, ksh93 (-l, --line-buffer); Linux/FreeBSD/OpenBSD/NetBSD tee(1) OPTIONS |
| FreeBSD, OpenBSD, NetBSD | long options | Only the Solnix ksh93 built-in and Linux tee have long options (--append, --ignore-interrupts). The FreeBSD, OpenBSD and NetBSD pages document only -a and -i. /usr/bin/tee on Solnix also has short options only.Source: Solnix tee(1) OPTIONS, ksh93; Linux tee(1) DESCRIPTION; FreeBSD/OpenBSD/NetBSD tee(1) SYNOPSIS |
| all four | exit status | Solnix /usr/bin/tee returns the number of files that could not be opened or whose status could not be obtained. FreeBSD, OpenBSD and NetBSD document only 0 on success and >0 on error. The Linux page gives no exit status section. Test for non-zero, not for a specific value.Source: Solnix tee(1) EXIT STATUS, /usr/bin/tee; FreeBSD/OpenBSD/NetBSD tee(1) EXIT STATUS; Linux tee(1) |
| FreeBSD, OpenBSD, NetBSD | write failure to one file | The Solnix ksh93 built-in page says that if a write to a file fails, tee continues to write to the other files but exits non-zero. The BSD pages do not describe this behaviour. Source: Solnix tee(1) DESCRIPTION, ksh93; FreeBSD/OpenBSD/NetBSD tee(1) DESCRIPTION |
| Linux | buffering | Solnix, FreeBSD, OpenBSD and NetBSD pages state that tee does not buffer its output. The Linux page does not say this. Source: Solnix tee(1) DESCRIPTION; FreeBSD/OpenBSD/NetBSD tee(1) DESCRIPTION; Linux tee(1) DESCRIPTION |
| FreeBSD | unix sockets | FreeBSD tee may also write to unix(4) sockets. The Solnix, Linux, OpenBSD and NetBSD pages do not mention this. Source: FreeBSD tee(1) DESCRIPTION; Solnix tee(1) DESCRIPTION |
| all four | file operand limit and large files | Solnix documents support for at least 13 file operands, limited by the underlying system, and refers to largefile(7) for files of 2 Gbyte or more. The other pages state no operand limit. Source: Solnix tee(1) OPERANDS, USAGE; Linux/FreeBSD/OpenBSD/NetBSD tee(1) |
Standards
- POSIX: tee is a POSIX.1-2024 utility.
- Solnix: ATTRIBUTES:
/usr/bin/teeInterface Stability is Committed, Standard: see standards(7). The ksh93 built-in binding to/binand/usr/binis Volatile and the built-in interfaces are Uncommitted. - FreeBSD: The tee utility is expected to be IEEE Std 1003.2 (“POSIX.2”) compatible.
- OpenBSD: The tee utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification.
- NetBSD: The tee function is expected to be POSIX IEEE Std 1003.2 (“POSIX.2”) compatible.
Writing portable scripts
- Use only tee
-aand tee-iin portable scripts. Every system in the bundle documents both. - Do not rely on
-p,--output-error,-lor the long options, and do not depend on a specific non-zero exit value.
Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.