ul(1) on Solnix vs Linux and the BSDs
On Solnix, ul is the illumos ul at /usr/bin/ul. It takes only -i and -t terminal, the same short options as the BSDs, and reads the terminfo directory /usr/share/lib/terminfo. The biggest differences: Linux adds long options, FreeBSD reads termcap, and OpenBSD's ul does far more than translate underscores and changes what -i prints.
The manual pages
What Solnix runs
A default Solnix system runs the illumos ul at /usr/bin/ul, published in pkgs.solnix.illumos-world-man. No other variants are shipped. The Solnix page's -i text contains garbled bytes where the dash character should be, so the bundle does not show exactly which character is printed.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| Linux | long options and extra short flags | Linux ul accepts --indicated, --terminal, -T (an alias of -t), -h/--help and -V/--version. The Solnix synopsis has only -i and -t terminal, so scripts using the long forms, -T or -V fail on Solnix.Source: Linux ul(1) OPTIONS (-i, --indicated; -t, -T, --terminal; -h; -V); Solnix ul(1) SYNOPSIS |
| OpenBSD | what ul translates | Solnix ul is documented as translating underscores to the terminal's underline sequence. OpenBSD ul handles backspace, tab, carriage return, shift in/out and escape 7/8/9, and also converts boldface and reverse video markup. The Solnix page documents none of this. Source: OpenBSD ul(1) DESCRIPTION (control characters, underline, boldface, reverse video); Solnix ul(1) DESCRIPTION |
| OpenBSD | -i output format | Solnix -i adds a separate line of dashes to show underlining. OpenBSD -i does not apply markup. After each marked-up line it prints a line of codes: _ underline, ! bold, g inverse, ^ superscript, v subscript, X mixed.Source: Solnix ul(1) -i; OpenBSD ul(1) -i |
| OpenBSD | unknown escape sequences | OpenBSD ul aborts with an error message and a non-zero exit code on an unknown escape sequence, and discards non-printable characters and invalid bytes. The Solnix page does not describe this. Source: OpenBSD ul(1) DESCRIPTION (last paragraph before OPTIONS); Solnix ul(1) DESCRIPTION |
| FreeBSD | terminal database | Solnix ul reads terminfo entries under /usr/share/lib/terminfo. FreeBSD ul reads /etc/termcap.Source: Solnix ul(1) DESCRIPTION; FreeBSD ul(1) DESCRIPTION |
| NetBSD | terminal database location | NetBSD ul reads /usr/share/misc/terminfo, while Solnix uses /usr/share/lib/terminfo. Linux and OpenBSD name the terminfo database but not a path.Source: NetBSD ul(1) DESCRIPTION; Solnix ul(1) DESCRIPTION; Linux ul(1) DESCRIPTION; OpenBSD ul(1) DESCRIPTION |
| FreeBSD, OpenBSD | exit status | The Solnix page documents only exit code 1 when a named file is not found. FreeBSD and OpenBSD document 0 on success and >0 on any error. Linux and NetBSD have no exit status section. Source: Solnix ul(1) RETURN VALUES; FreeBSD ul(1) EXIT STATUS; OpenBSD ul(1) EXIT STATUS |
| FreeBSD, OpenBSD | locale environment variables | FreeBSD documents LANG, LC_ALL, LC_CTYPE and TERM as affecting ul. OpenBSD documents LC_CTYPE (character width and printability) and TERM. The Solnix page mentions only TERM. Source: FreeBSD ul(1) ENVIRONMENT; OpenBSD ul(1) ENVIRONMENT; Solnix ul(1) DESCRIPTION |
| Linux, NetBSD | backward-motion optimisation | Linux and NetBSD state that no attempt is made to optimise backward motion. The Solnix BUGS text says 'ul makes attempt to optimize the backward motion', which reads as a different statement. The manual does not say more. Source: Solnix ul(1) BUGS; Linux ul(1) BUGS; NetBSD ul(1) BUGS |
Standards
- POSIX: ul is not a POSIX.1-2024 utility.
Writing portable scripts
- Use only 'ul
-tterminal' (or rely on TERM) in portable scripts. Do not use-Tor the long options, which exist only on Linux. - Do not parse
-ioutput, since its format differs on OpenBSD. Test only for exit status 0 versus non-zero, because the Solnix page documents only exit code 1 for a missing file.
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.