df(1) on Solnix vs Linux and the BSDs
The published Solnix df(1) page is GNU coreutils df, identical in options to Linux, but a default Solnix system runs the illumos df at /usr/bin/df. The BSDs differ from GNU in several ways: 512-byte default blocks, -i adds inode columns instead of replacing the block columns, and -t takes a comma list with a "no" prefix instead of a separate -x.
The manual pages
What Solnix runs
A default Solnix system runs the illumos df at /usr/bin/df and /usr/sbin/df. /usr/xpg4/bin/df and /usr/ucb/df are also shipped. The bundle contains no illumos df text, so this page cannot say how those binaries differ from the page published by pkgs.solnix.coreutils. That package documents GNU df 9.7 (page dated April 2025). Its options apply only if the GNU df is the one actually run, and the manual does not say under what path it is installed. Add it with pkgs.solnix.coreutils.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| Linux | same program as Linux | The published Solnix page is the GNU coreutils df page, with the same synopsis, options, SIZE units, FIELD_LIST names and environment variables as the Linux page. Only the page version and packaging footer differ. Source: Solnix df(1) DESCRIPTION, OPTIONS; Linux df(1) DESCRIPTION, OPTIONS |
| FreeBSD, OpenBSD, NetBSD | default block size | GNU df (Solnix page, Linux) shows 1K blocks by default, or 512-byte blocks if POSIXLY_CORRECT is set. FreeBSD, OpenBSD and NetBSD default to 512-byte blocks. Output from a script that omits -k differs by a factor of two.Source: Solnix df(1) DESCRIPTION; FreeBSD df(1) DESCRIPTION; OpenBSD df(1) DESCRIPTION; NetBSD df(1) DESCRIPTION |
| FreeBSD, OpenBSD, NetBSD | block-size environment variables | GNU df checks --block-size, then DF_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE. The BSD pages document only BLOCKSIZE. OpenBSD ignores it when -h, -k or -P is given.Source: Solnix df(1) OPTIONS (SIZE paragraph); FreeBSD df(1) ENVIRONMENT; OpenBSD df(1) ENVIRONMENT; NetBSD df(1) ENVIRONMENT |
| FreeBSD, OpenBSD, NetBSD | -i inode output | GNU -i lists inode information instead of block usage. On FreeBSD, OpenBSD and NetBSD, -i includes inode statistics in addition to the normal columns. Column layout therefore differs, and parsing by position breaks.Source: Solnix df(1) -i; FreeBSD df(1) -i; OpenBSD df(1) -i; NetBSD df(1) -i |
| FreeBSD, OpenBSD, NetBSD | -P meaning | GNU -P selects the POSIX output format. On FreeBSD, -P just means 512-byte blocks, the same as -b, and -k overrides it. OpenBSD and NetBSD -P give a portable format, and -i cannot be combined with it. OpenBSD also rejects -h with -P.Source: Solnix df(1) -P; FreeBSD df(1) -P, -b, BUGS; OpenBSD df(1) -P, -h, -i; NetBSD df(1) -P |
| FreeBSD, OpenBSD, NetBSD | filtering by type: -t and -x | GNU -t TYPE selects a type and -x TYPE excludes one. The BSDs have no -x. Their -t takes a comma-separated list, and a "no" prefix excludes (FreeBSD example: -t nonfs,nullfs). The GNU page does not document a list or prefix.Source: Solnix df(1) -t, -x; FreeBSD df(1) -t; OpenBSD df(1) -t; NetBSD df(1) -t |
| OpenBSD, NetBSD | -T file system type | GNU and FreeBSD df have -T to print the file system type. The OpenBSD and NetBSD synopses and option lists have no -T.Source: Solnix df(1) -T; FreeBSD df(1) -T; OpenBSD df(1) SYNOPSIS; NetBSD df(1) SYNOPSIS |
| OpenBSD | -H and powers of 1000 | GNU -H (--si) and FreeBSD/NetBSD -H print sizes in powers of 1000. OpenBSD has no -H. On GNU, -h uses powers of 1024. The OpenBSD page says -i with -h reports using SI symbols.Source: Solnix df(1) -h, -H; FreeBSD df(1) -H; NetBSD df(1) -H; OpenBSD df(1) SYNOPSIS, -i |
| FreeBSD, NetBSD | grand total | GNU uses --total, which also elides entries insignificant to available space. FreeBSD and NetBSD use -c for a grand total. OpenBSD has no equivalent. NetBSD -c with -f shows only the total.Source: Solnix df(1) --total; FreeBSD df(1) -c; NetBSD df(1) -c; OpenBSD df(1) SYNOPSIS |
| FreeBSD, OpenBSD, NetBSD | stale statistics (-n) | The BSDs have -n, which prints previously obtained statistics without querying file systems, so it will not hang on a stalled mount. The GNU page lists no -n. It has --sync and --no-sync (default) controlling a sync before reading usage.Source: FreeBSD df(1) -n; OpenBSD df(1) -n; NetBSD df(1) -n; Solnix df(1) --sync, --no-sync |
| FreeBSD, NetBSD | BSD-only options | FreeBSD adds --libxo, -g, -m and -, (thousands grouping). NetBSD adds -f (free space only), -G (all statvfs fields, modelled after the Solaris -g), -M, -N (no header), -q and -W. GNU uses -B and --output instead.Source: FreeBSD df(1) --libxo, -g, -m, -,; NetBSD df(1) -f, -G, -M, -N, -q, -W; Solnix df(1) -B, --output |
| Linux | --output field selection | The Solnix GNU page and Linux page offer --output[=FIELD_LIST] with fields source, fstype, itotal, iused, iavail, ipcent, size, used, avail, pcent, file and target. No BSD page documents an equivalent.Source: Solnix df(1) --output, FIELD_LIST; Linux df(1) --output |
Standards
- POSIX: df is a POSIX.1-2024 utility.
- Solnix: The published GNU page has no STANDARDS section. It says only that
-Puses the POSIX output format. - FreeBSD: With the exception of most options, df conforms to IEEE Std 1003.1-2004 (“POSIX.1”), which defines only the
-k,-Pand-toptions. - OpenBSD: df is compliant with IEEE Std 1003.1-2008 (“POSIX.1”). The flags
-hilnand the BLOCKSIZE environment variable are extensions. The-tbehaviour is the traditional BSD one, which differs from the X/Open System Interfaces option specification. - NetBSD: The bundled NetBSD page has no STANDARDS section.
Writing portable scripts
- Use df
-Pkand parse the columns.-kand-Pexist on GNU and all three BSDs, and 1024-byte blocks are explicit. Avoid-h,-H,-T,-xand--output, which are missing or mean different things on some systems. - Do not assume plain df on Solnix is the GNU df that its published page describes; the default
/usr/bin/dfis the illumos one. Test for the options you need, or stay with-Pk.
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.