write(1) on Solnix vs Linux and the BSDs

On Solnix, write is the illumos write at /usr/bin/write. It is a POSIX.1-2024 utility. Unlike the Linux and BSD pages, the Solnix page documents a '!' shell escape, a different terminal-selection rule (first writable instance in utmpx, not shortest idle time), and a different message header.

What Solnix runs

A default Solnix system runs the illumos write at /usr/bin/write. No other variants are shipped. The page's mention of /usr/adm/utmpx is quoted as written.

Differences

Compared withTopicWhat differs
all fourchoosing among multiple loginsSolnix picks the first writable instance of the user found in /usr/adm/utmpx and prints a 'logged on more than one place' notice listing the other terminals. Linux, FreeBSD, OpenBSD and NetBSD pick the terminal with the shortest idle time.
Source: Solnix write(1) DESCRIPTION (utmpx paragraph); Linux/FreeBSD/OpenBSD/NetBSD write(1) DESCRIPTION (shortest idle time)
all four'!' shell escapeOn Solnix, a line starting with ! makes write call the shell to run the rest of the line as a command. The Linux, FreeBSD, OpenBSD and NetBSD pages do not document this.
Source: Solnix write(1) DESCRIPTION (character ! at the beginning of a line); Linux/FreeBSD/OpenBSD/NetBSD write(1) DESCRIPTION
all fouropening message formatSolnix sends 'Message from sender-login-id (sending-terminal) [date]...'. The other four pages show 'Message from yourname@yourhost on yourtty at hh:mm ...'. Do not parse the header across systems.
Source: Solnix write(1) DESCRIPTION; Linux/FreeBSD/OpenBSD/NetBSD write(1) DESCRIPTION
all fourend-of-conversation messageOn Solnix, the interrupt or end-of-file character makes write send 'EOT\n' in the C locale to the recipient. The other four pages say the recipient sees 'EOF'.
Source: Solnix write(1) DESCRIPTION (interrupt or end-of-file characters); Linux/FreeBSD/OpenBSD/NetBSD write(1) DESCRIPTION
LinuxoptionsSolnix write documents no options in its synopsis, 'write user [terminal]'. Linux write accepts -h/--help and -V/--version.
Source: Solnix write(1) SYNOPSIS; Linux write(1) OPTIONS
OpenBSDnon-printable and non-ASCII charactersSolnix uses the sender's LC_CTYPE: printable characters go through, and others show as ^X or meta notation. OpenBSD ignores the sender's locale on purpose and writes non-ASCII characters as '?'. FreeBSD's BUGS section says the sender's LC_CTYPE is used.
Source: Solnix write(1) DESCRIPTION (LC_CTYPE, ^ and meta notation); OpenBSD write(1) STANDARDS; FreeBSD write(1) BUGS
Linux, FreeBSD, NetBSDexit status documentedSolnix documents exit 0 on success and >0 when the user is not logged on or denies permission. OpenBSD documents the same. The Linux, FreeBSD and NetBSD pages have no EXIT STATUS section.
Source: Solnix write(1) EXIT STATUS; OpenBSD write(1) EXIT STATUS; Linux/FreeBSD/NetBSD write(1) (no such section)
all fourtty group and privilegesSolnix write runs setgid() to group tty to write to other users' terminals, and fails if the user lacks the privileges for the request. The other four pages do not describe this.
Source: Solnix write(1) DESCRIPTION (setgid() to the group ID tty); Linux/FreeBSD/OpenBSD/NetBSD write(1) DESCRIPTION
all fourtyped control and erase charactersSolnix processes data per line in canonical mode. The alert character is passed on, and erase and kill act on the sender's terminal per termios(3C). The extra characters handled when stty iexten is on are described only for Solnix.
Source: Solnix write(1) DESCRIPTION (character list, iexten); Linux/FreeBSD/OpenBSD/NetBSD write(1) DESCRIPTION
all fourconversation protocol textSolnix suggests ending a message with (o) for over and (oo) for over and out. The other four pages give -o and oo.
Source: Solnix write(1) DESCRIPTION (suggested protocol); Linux/FreeBSD/OpenBSD/NetBSD write(1) DESCRIPTION

Standards

  • POSIX: write is a POSIX.1-2024 utility.
  • Solnix: Interface Stability: Committed. Standard: see standards(7).
  • OpenBSD: write is compliant with IEEE Std 1003.1-2008 (“POSIX.1”), except that the sender's locale is intentionally ignored and non-ASCII characters are written as '?'.
  • Linux: The Linux page has no STANDARDS section; its HISTORY says write appeared in Version 5 AT&T UNIX (Jun 1974).

Writing portable scripts

  • Use only 'write user [terminal]' with no options in portable scripts, and do not depend on the header text, the EOF/EOT message, or which terminal is chosen for a multi-login user.
  • Do not rely on the '!' shell escape or on non-ASCII text reaching the recipient: OpenBSD sends non-ASCII characters as '?'.

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.