comm(1) on Solnix vs Linux and the BSDs

On Solnix, comm is the illumos /usr/bin/comm, which has only -1, -2 and -3. The Linux GNU options (--check-order, --output-delimiter, --total, -z) and the BSD case-folding options (-i on FreeBSD, -f on OpenBSD and NetBSD) are not in the Solnix page.

What Solnix runs

A default Solnix system runs the illumos comm at /usr/bin/comm, published in pkgs.solnix.illumos-world-man. No other variants are shipped.

Differences

Compared withTopicWhat differs
FreeBSDcase-insensitive comparisonFreeBSD comm -i compares lines ignoring case. The Solnix page documents no such option, so a script using -i fails there.
Source: FreeBSD comm(1) -i; Solnix comm(1) SYNOPSIS, OPTIONS
OpenBSD, NetBSD-f fold caseOpenBSD and NetBSD comm -f folds case in line comparisons. The Solnix page documents no -f.
Source: OpenBSD comm(1) -f; NetBSD comm(1) -f; Solnix comm(1) OPTIONS
LinuxGNU-only optionsLinux comm has --check-order, --nocheck-order, --output-delimiter=STR, --total and -z/--zero-terminated. The Solnix synopsis is only comm [-123] file1 file2, with no long options.
Source: Linux comm(1) DESCRIPTION options; Solnix comm(1) SYNOPSIS
LinuxNUL-delimited inputLinux comm -z reads NUL-terminated lines. The Solnix page documents no way to change the line delimiter.
Source: Linux comm(1) -z, --zero-terminated; Solnix comm(1) OPTIONS
Linuxoutput delimiterLinux comm --output-delimiter=STR sets the column separator. The Solnix page does not describe how columns are separated, so it cannot be changed or relied on there.
Source: Linux comm(1) --output-delimiter; Solnix comm(1) DESCRIPTION
FreeBSD, OpenBSD, NetBSDcolumn tab layout documentedThe FreeBSD, OpenBSD and NetBSD pages say each column is prefixed with one tab per lower-numbered column that is printed. The Solnix page does not describe the column layout.
Source: FreeBSD/OpenBSD/NetBSD comm(1) DESCRIPTION; Solnix comm(1) DESCRIPTION
all fourunsorted inputSolnix requires input ordered in the current collating sequence and says results are unspecified if it is not. Linux can check order with --check-order. The BSD pages say files should be sorted lexically, with all characters participating in comparisons.
Source: Solnix comm(1) DESCRIPTION; Linux comm(1) --check-order; FreeBSD/OpenBSD/NetBSD comm(1) DESCRIPTION
all fourenvironment variablesSolnix lists LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES and NLSPATH. FreeBSD lists LANG, LC_ALL, LC_COLLATE and LC_CTYPE. Linux says comparisons honor LC_COLLATE. OpenBSD and NetBSD list no environment section.
Source: Solnix comm(1) ENVIRONMENT VARIABLES; FreeBSD comm(1) ENVIRONMENT; Linux comm(1) DESCRIPTION
Linuxstandard input operandSolnix lets either file operand be -, and the page does not exclude both. Linux says only one of FILE1 or FILE2 (not both) may be -.
Source: Solnix comm(1) OPERANDS; Linux comm(1) DESCRIPTION

Standards

  • POSIX: comm is a POSIX.1-2024 utility.
  • Solnix: Interface Stability: Standard. CSI: enabled.
  • FreeBSD: Conforms to IEEE Std 1003.2-1992 (“POSIX.2”). The -i option is an extension to the POSIX standard.
  • OpenBSD: Conforms to IEEE Std 1003.1-2008 (“POSIX.1”). The flag -f is an extension to that specification.
  • NetBSD: Conforms to IEEE Std 1003.2-1992 (“POSIX.2”).

Writing portable scripts

  • Use only -1, -2 and -3 in portable scripts. Case folding (-i or -f), -z and the GNU long options are not on every system.
  • To compare case-insensitively, fold case in both inputs yourself before running comm, instead of relying on -i or -f.

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.