tic(1) on Solnix vs Linux and the BSDs
The published Solnix tic(1) page is the ncurses 6.5 tic from pkgs.solnix.ncurses, but a default Solnix system runs the illumos tic at /usr/bin/tic. The bundle has no illumos text, so its options are not documented here. Against NetBSD, the ncurses tic is a different program: NetBSD writes a .cdb file and has only -a -c -o -S -s -x.
The manual pages
What Solnix runs
On PATH a default Solnix system has the illumos /usr/bin/tic, and no other illumos variants are shipped. The published page describes the ncurses tic from pkgs.solnix.ncurses (the page's paths name ncurses-6.5 in /nix/store). The bundle does not include the illumos page, so any difference between the two Solnix implementations is not covered here. Add pkgs.solnix.ncurses to get the ncurses tic.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| Linux | same program | The ncurses tic on Solnix and on Linux is the same program. The synopsis, option letters and Aliases section (infotocap sets -I, captoinfo sets -C) match. The Solnix page is for ncurses 6.5 and the Linux page for ncurses 6.6.Source: Solnix tic(1) SYNOPSIS, Aliases; Linux tic(1m) SYNOPSIS, Aliases |
| FreeBSD, OpenBSD | same program, different database path | FreeBSD and OpenBSD also ship the ncurses tic with the same options. Only the default output location differs: FreeBSD /usr/share/misc/terminfo, OpenBSD /usr/share/terminfo. Solnix and Linux give a path inside an ncurses package in /nix/store.Source: Solnix tic(1) DESCRIPTION; Linux tic(1m) DESCRIPTION; FreeBSD tic(1) DESCRIPTION; OpenBSD tic(1) DESCRIPTION |
| FreeBSD, OpenBSD | default terminfo location | On Solnix, the system terminfo database that tic writes to by default is a /nix/store/...-ncurses-6.5/share/terminfo path. A script that assumes /usr/share/terminfo or /usr/share/misc/terminfo will not find entries there. Run tic -D to see the real locations.Source: Solnix tic(1) DESCRIPTION, -D; FreeBSD tic(1) DESCRIPTION; OpenBSD tic(1) DESCRIPTION |
| Linux, FreeBSD, OpenBSD | fallback to $HOME/.terminfo | If tic cannot write to the system database or to $TERMINFO, it uses $HOME/.terminfo (or $HOME/.terminfo.db), but only if that location already exists. This is stated on the Solnix, Linux, FreeBSD and OpenBSD pages. -o dir or TERMINFO overrides the default.Source: Solnix tic(1) DESCRIPTION; Linux tic(1m) DESCRIPTION; FreeBSD tic(1) DESCRIPTION; OpenBSD tic(1) DESCRIPTION |
| NetBSD | output format and location | NetBSD tic writes a database whose name is the source file name with .cdb appended. The ncurses tic on Solnix writes a directory tree or a hashed .db database in the system terminfo location, chosen by how it was built. Source: NetBSD tic(1) DESCRIPTION; Solnix tic(1) DESCRIPTION |
| NetBSD | -o meaning | On NetBSD, -o file names the output database file instead of source.cdb. On Solnix, -odir names a terminfo database location (directory or hashed database) and overrides TERMINFO.Source: NetBSD tic(1) -o; Solnix tic(1) -o |
| NetBSD | missing options | NetBSD tic accepts only -a, -c, -o, -S, -s and -x. It has none of the Solnix options -I, -C, -e, -D, -Q, -R, -v and -w, and its page does not mention infotocap or captoinfo. Solnix tic can force translation to terminfo (-I) or termcap (-C) format.Source: NetBSD tic(1) SYNOPSIS, options; Solnix tic(1) SYNOPSIS, -C, -I |
| NetBSD | -S meaning | NetBSD -S is unique to its tic: for each term1 term2 ... given after the source file, it outputs a C structure with name, compiled description and size, to embed in a program. The Solnix page documents no -S; its synopsis has no -S.Source: NetBSD tic(1) SYNOPSIS, -S; Solnix tic(1) SYNOPSIS |
| NetBSD | -a and -x | On NetBSD, -a only keeps commented-out capabilities and -x is a separate option for non-standard capabilities. On Solnix, -a also sets -x, because commented-out entries are treated as user-defined names.Source: NetBSD tic(1) -a, -x; Solnix tic(1) -a |
| NetBSD | -c check mode | On NetBSD, -c checks for errors and does not write the final database. On Solnix, -c checks file for syntax problems and bad use-links, and with -C or -I warns about entries longer than 1023 (4096) bytes after use resolution.Source: NetBSD tic(1) -c; Solnix tic(1) -c |
| NetBSD | selecting terminals | On NetBSD, terminals are given as extra arguments after the source file, and the page ties them to -S. On Solnix, -e list limits writes and translations to a comma-separated list, or to a file of names if the value contains '/'.Source: NetBSD tic(1) SYNOPSIS, -S; Solnix tic(1) -e |
| FreeBSD, OpenBSD | compiled-in directory list | The Solnix page does not leave the compiled-in directory list blank. It gives the ncurses store path. The FreeBSD page shows the placeholder @TERMINFO_DIRS@ and the OpenBSD page shows (?), so those pages do not say what the list is. Source: Solnix tic(1) DESCRIPTION; FreeBSD tic(1) DESCRIPTION; OpenBSD tic(1) DESCRIPTION |
Standards
- POSIX: tic is not a POSIX.1-2024 utility.
- NetBSD: The tic utility works with terminfo files that conform to the X/Open Curses Issue 4, Version 2 (“XCURSES4.2”) standard.
Writing portable scripts
- Do not hard-code the terminfo directory. Pass
-odir, or set TERMINFO, and use tic-Dto see where the ncurses tic would write. - Use only
-a,-c,-oand-xif the script must also run on NetBSD, and remember that-otakes a file name there and a database location elsewhere.
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.