strings(1) on Solnix vs Linux and the BSDs

A default Solnix system runs the illumos strings at /usr/bin/strings. The published page (pkgs.solnix.binutils) documents GNU strings, which has the same options as Linux. The key difference is that illumos -o means -t d, while GNU, FreeBSD and OpenBSD -o means -t o.

What Solnix runs

The published strings(1) page comes from pkgs.solnix.binutils and describes GNU strings. The command on PATH is the illumos /usr/bin/strings, whose page is different. No other illumos variants are shipped. The illumos strings has only -a, -, -n, -number, -N, -o and -t. It has no -e, -f, -d, -U, -T, -w, -s, -v/-V, --help or long options, and no @file. To get the GNU options, install pkgs.solnix.binutils. The bundle does not say what name or path the GNU binary gets on Solnix.

Differences

Compared withTopicWhat differs
all four-o meaningillumos strings -o is equivalent to -t d (decimal offset). GNU strings on Linux and OpenBSD, and FreeBSD strings, make -o equivalent to -t o (octal). The same -o gives different offsets on the illumos command on PATH. Use -t explicitly.
Source: Solnix default illumos strings(1) -o; Linux strings(1) -o; FreeBSD strings(1) -o; OpenBSD strings(1) -o
Linux, FreeBSD, OpenBSD-e encodingThe illumos strings on PATH has no -e. Linux, FreeBSD and OpenBSD take -e encoding (s, S, b, l, B, L) to find 16-bit and 32-bit strings. The illumos page documents no way to search wide-character strings.
Source: Solnix default illumos strings(1) SYNOPSIS and OPTIONS; Linux strings(1) -e; FreeBSD strings(1) -e; OpenBSD strings(1) -e
Linux, FreeBSD, OpenBSD-f file name prefixThe illumos strings on PATH has no -f / --print-file-name. Linux, FreeBSD and OpenBSD can print the file name before each string.
Source: Solnix default illumos strings(1) OPTIONS; Linux strings(1) -f; FreeBSD strings(1) -f; OpenBSD strings(1) -f
Linux, FreeBSD, OpenBSDlong optionsThe illumos strings page documents no long options. Linux, FreeBSD and OpenBSD accept --all, --bytes, --radix, --encoding and --print-file-name. The long forms are not in the illumos synopsis.
Source: Solnix default illumos strings(1) SYNOPSIS; Linux strings(1) SYNOPSIS; FreeBSD strings(1) SYNOPSIS; OpenBSD strings(1) SYNOPSIS
Linux, FreeBSD, OpenBSDdefault scan scopeillumos strings by default looks at sections of type SHT_PROGBITS with the SHF_ALLOC flag. FreeBSD and OpenBSD scan initialized and loaded sections of object files. GNU on Linux depends on how it was configured, either the whole file or loadable data sections.
Source: Solnix default illumos strings(1) DESCRIPTION; FreeBSD strings(1) DESCRIPTION; OpenBSD strings(1) DESCRIPTION; Linux strings(1) DESCRIPTION
Linux, FreeBSD, OpenBSD-N section selectionillumos strings -N name searches only the named ELF section, and can be repeated. It is ignored if -a or - is given. None of the Linux, FreeBSD or OpenBSD pages document -N. Linux documents -d for data sections instead.
Source: Solnix default illumos strings(1) -N; Linux strings(1) -d; FreeBSD strings(1) OPTIONS; OpenBSD strings(1) OPTIONS
Linux, FreeBSD, OpenBSDstdin and multiple filesThe illumos synopsis takes an optional [file]... and reads standard input if none is given. The Linux and OpenBSD synopses show file... as required and do not describe stdin. The Linux page says it always scans everything when reading stdin. FreeBSD says stdin is read when no file is named.
Source: Solnix default illumos strings(1) OPERANDS; FreeBSD strings(1) DESCRIPTION; Linux strings(1) DESCRIPTION; OpenBSD strings(1) SYNOPSIS
Linux, FreeBSD, OpenBSDversion and help flagsillumos strings documents no -v, -V, -h or --help. On Linux and OpenBSD -v prints the version. On FreeBSD -v prints a version and -h prints help. In scripts, the same -v is not a version probe on the illumos command.
Source: Solnix default illumos strings(1) OPTIONS; Linux strings(1) -v, --help; FreeBSD strings(1) -h, -v; OpenBSD strings(1) -v, --help
Linux, OpenBSD@file option filesThe GNU pages (Linux, OpenBSD) read options from a file with @file. The illumos page on PATH does not document this.
Source: Linux strings(1) @file; OpenBSD strings(1) @file; Solnix default illumos strings(1) OPTIONS
Linuxpublished GNU page is the same program as LinuxThe published Solnix page (pkgs.solnix.binutils) and the Linux page have the same synopsis and option text, including -d, -U, -T, -w and -s. After installing the package, behaviour matches GNU strings on Linux.
Source: Solnix strings(1) [binutils] SYNOPSIS and OPTIONS; Linux strings(1) SYNOPSIS and OPTIONS
FreeBSD, OpenBSDGNU-only optionsThe GNU page documents -d, -U, -T, -w and -s. FreeBSD documents none of these. OpenBSD documents only the long form --target. These need the pkgs.solnix.binutils build, not the illumos command.
Source: Solnix strings(1) [binutils] OPTIONS; FreeBSD strings(1) SYNOPSIS; OpenBSD strings(1) SYNOPSIS

Standards

  • POSIX: strings is a POSIX.1-2024 utility.
  • Solnix: illumos strings: the utility, including all options except -N, is specified by standards (see standards(7)). The -N option is not currently specified by any standard. CSI is Enabled.
  • Solnix: The published GNU binutils page has no STANDARDS section.
  • Linux: The Linux page has no STANDARDS section.
  • FreeBSD: The FreeBSD page has no STANDARDS section.
  • OpenBSD: The OpenBSD page has no STANDARDS section.

Writing portable scripts

  • Write offsets with -t d, -t o or -t x, never -o: it is octal on GNU, FreeBSD and OpenBSD but decimal on illumos.
  • Stick to -a, -n number and -t radix, which all four implementations document. Avoid -e, -f, -N and the long options in portable scripts.

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.