df(8) on Solnix vs Linux and the BSDs
On Solnix, df is the illumos df, documented in section 8 and installed at both /usr/bin/df and /usr/sbin/df. Its letters differ sharply from Linux and the BSDs: -t prints totals instead of selecting a file system type, -h scales by 1024 as on Linux, and there is no -i, -H, -T or -B.
The manual pages
- Solnix: df(8) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: df(1) coreutils-full-9.11
- FreeBSD: df(1) 15.1-RELEASE
- OpenBSD: df(1) 8.0
- NetBSD: df(1) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
df
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, but the bundle does not describe how they differ. Unlike the other systems, the Solnix df can also report on unmounted file systems, using -F.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| all four | -t meaning | Solnix df -t prints full listings with totals. On Linux, FreeBSD, OpenBSD and NetBSD, -t type limits the listing to file systems of that type. Scripts that use df -t ext4 or df -t nonfs break on Solnix.Source: Solnix df(8) -t; Linux df(1) -t, --type; FreeBSD df(1) -t; OpenBSD df(1) -t; NetBSD df(1) -t |
| all four | inode reporting (-i vs -e) | Solnix has no -i. Its -e prints only the number of files free. Linux, FreeBSD, OpenBSD and NetBSD use -i to add or list inode statistics.Source: Solnix df(8) -e and SYNOPSIS; Linux df(1) -i; FreeBSD df(1) -i; OpenBSD df(1) -i; NetBSD df(1) -i |
| all four | -P meaning | Solnix -P is documented as the same as -h but in 512-byte units. Linux -P selects the POSIX output format. OpenBSD -P is a stricter format for portable scripts, and NetBSD -P has a fixed header and format. FreeBSD -P means 512-byte blocks.Source: Solnix df(8) -P; Linux df(1) -P; FreeBSD df(1) -P; OpenBSD df(1) -P; NetBSD df(1) -P |
| FreeBSD, OpenBSD, NetBSD | -n meaning | Solnix -n prints only the FSType name (a list of mounted types if no operand is given). On FreeBSD, OpenBSD and NetBSD, -n prints previously obtained, possibly stale statistics instead of requesting new ones.Source: Solnix df(8) -n; FreeBSD df(1) -n; OpenBSD df(1) -n; NetBSD df(1) -n |
| FreeBSD, NetBSD | -g meaning | Solnix -g prints the entire statvfs(2) structure. FreeBSD -g reports in 1 GiB blocks and NetBSD -g in gigabytes. NetBSD's own -G is described as modelled after the Solaris -g option.Source: Solnix df(8) -g; FreeBSD df(1) -g; NetBSD df(1) -g, -G |
| FreeBSD, NetBSD | -b meaning | Solnix -b prints the total number of kilobytes free. FreeBSD -b and NetBSD -b select 512-byte blocks and override BLOCKSIZE.Source: Solnix df(8) -b; FreeBSD df(1) -b; NetBSD df(1) -b |
| Linux, FreeBSD, NetBSD | -h and -H | Solnix -h scales by 1024 (e.g. 14K, 234M, 2.7G) and is a variant of -k that overrides -b, -e, -g, -k, -n, -t and -V. It cannot be combined with -o. Solnix has no -H for powers of 1000, which Linux, FreeBSD and NetBSD provide.Source: Solnix df(8) -h; Linux df(1) -h, -H; FreeBSD df(1) -H; NetBSD df(1) -H |
| Linux, FreeBSD | filesystem type column and filtering | Solnix has no -T to show the file system type and no -x to exclude types. Linux has -T and -x. FreeBSD has -T. On Solnix, -F FSType selects the type to operate on, and -n lists type names.Source: Solnix df(8) -F, -n; Linux df(1) -T, -x; FreeBSD df(1) -T |
| Linux | block size selection | Linux has -B SIZE and reads DF_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE. Solnix has no -B and its page lists none of these variables. It offers -k, -m and -v for fixed units.Source: Linux df(1) -B, OPTIONS closing paragraph; Solnix df(8) -k, -m, -v, ENVIRONMENT VARIABLES |
| FreeBSD, OpenBSD, NetBSD | BLOCKSIZE environment variable | FreeBSD, OpenBSD and NetBSD read BLOCKSIZE to choose the unit for block counts. The Solnix page lists only LANG, LC_ALL, LC_CTYPE, LC_MESSAGES and NLSPATH, and does not document BLOCKSIZE. Source: FreeBSD df(1) ENVIRONMENT; OpenBSD df(1) ENVIRONMENT; NetBSD df(1) ENVIRONMENT; Solnix df(8) ENVIRONMENT VARIABLES |
| all four | unmounted file systems and zones | Solnix df can report on unmounted file systems when given -F, and -V prints the file-system-specific command lines without running them. -Z shows mounts in all visible zones. Linux df cannot show unmounted file systems, and the BSD pages describe mounted file systems only.Source: Solnix df(8) DESCRIPTION, -F, -V, -Z; Linux df(1) DESCRIPTION; FreeBSD df(1) DESCRIPTION; OpenBSD df(1) DESCRIPTION |
| FreeBSD, NetBSD | grand total | FreeBSD and NetBSD use -c for a grand total, and Linux uses --total. Solnix has no -c. Its -t prints full listings with totals.Source: Solnix df(8) -t; FreeBSD df(1) -c; NetBSD df(1) -c; Linux df(1) --total |
Standards
- POSIX: df is a POSIX.1-2024 utility.
- Solnix: ATTRIBUTES: Interface Stability is Standard.
- 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 the IEEE Std 1003.1-2008 (“POSIX.1”) specification. The flags [
-hiln] and BLOCKSIZE are extensions. OpenBSD provides the traditional BSD-tbehaviour, which differs from the X/Open System Interfaces option specification.
Writing portable scripts
- Avoid
-t,-P,-h,-iand-nin scripts meant to run on Solnix and the other systems. They mean different things or are missing. df-kwith a file operand is the common ground. - Do not rely on BLOCKSIZE to set units. The Solnix page does not document it. Pass an explicit unit flag such as
-kinstead.
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.