jobs(1) on Solnix vs Linux and the BSDs

On Solnix, jobs is the illumos /usr/bin/jobs, and its page covers the jobs, fg, bg, stop and notify built-ins of sh, csh, ksh and ksh93. The FreeBSD and NetBSD counterparts are the builtin(1) index and the csh(1) page, so they document no jobs options. The Solnix sh -x and -p options and the stop command are not documented there.

What Solnix runs

A default Solnix system runs the illumos jobs at /usr/bin/jobs. /usr/xpg4/bin/jobs is also shipped, but the bundle does not say how it differs. The page documents separate behaviour per shell: sh and ksh take % job_id, ksh93 takes job_id without %, and csh has its own jobs, fg, bg, notify and stop.

Differences

Compared withTopicWhat differs
FreeBSDwhat the page isThe FreeBSD jobs(1) page is the builtin(1) index of shell built-ins, not a jobs reference. It lists jobs for csh(1) and sh(1), and marks it No* (an external script wrapping the built-in). It documents no jobs options.
Source: FreeBSD jobs(1) NAME, Commands table (jobs: No*, csh Yes, sh Yes; No* footnote)
NetBSDwhat the page isThe NetBSD jobs(1) page is the csh(1) manual. jobs is a csh built-in described under Jobs, which says only that the job table is printed by the jobs command. The visible text documents no jobs options.
Source: NetBSD jobs(1) NAME, Jobs section
NetBSDflags are not jobs optionsThe flags extracted from the NetBSD page (-b -c -e -f -i -l -m -n -s -t -v -x and others) are csh startup flags. For example, -l means login shell and -n means parse only. They are not options of jobs, unlike Solnix jobs -l and -n.
Source: NetBSD jobs(1) SYNOPSIS and Argument list processing (-l, -n); Solnix jobs(1) ksh -l, -n
FreeBSD, NetBSDjobs optionsSolnix sh jobs takes -l (process group ID and working directory) and -p (process group IDs only). ksh jobs takes -l, -n and -p. The FreeBSD and NetBSD pages document none of these, so their behaviour cannot be confirmed from the manuals.
Source: Solnix jobs(1) sh and ksh OPTIONS; FreeBSD jobs(1) Commands table; NetBSD jobs(1) Jobs
FreeBSD, NetBSDjobs -xSolnix sh has jobs -x command [arguments], which replaces job IDs in the arguments with process group IDs and runs the command. The FreeBSD and NetBSD pages do not document this form.
Source: Solnix jobs(1) sh SYNOPSIS and -x; FreeBSD jobs(1); NetBSD jobs(1) Jobs
FreeBSDstop built-inSolnix documents stop in sh, csh and ksh, stopping a job by % job_id or any process by pid. The FreeBSD table lists stop only for csh, not sh. The NetBSD text visible here does not mention it.
Source: Solnix jobs(1) SYNOPSIS (stop in sh, csh, ksh); FreeBSD jobs(1) Commands table (stop: csh Yes, sh No)
FreeBSDnotify built-inSolnix documents notify only for csh, and the FreeBSD table likewise lists notify only for csh. Neither sh nor ksh has it on either system.
Source: Solnix jobs(1) csh SYNOPSIS; FreeBSD jobs(1) Commands table (notify: csh Yes, sh No)
FreeBSDjobid built-inThe FreeBSD table lists a jobid built-in for sh. The Solnix page documents no jobid command. Its sh equivalent for turning job IDs into process group IDs is jobs -x.
Source: FreeBSD jobs(1) Commands table (jobid: sh Yes); Solnix jobs(1) sh SYNOPSIS
FreeBSD, NetBSDjob control must be enabledIn the Solnix Bourne shell, jobs works when Job Control is enabled; invoking the shell as jsh enables it, typically for interactive shells only. The FreeBSD and NetBSD texts do not say how Job Control is enabled.
Source: Solnix jobs(1) sh DESCRIPTION (jsh); FreeBSD jobs(1); NetBSD jobs(1) Jobs
FreeBSD, NetBSD-l output differs by shell on SolnixSolnix jobs -l prints different things per shell. sh gives process group ID and working directory. csh adds process IDs. ksh gives job number, current job, process group ID, state and command.
Source: Solnix jobs(1) sh -l, csh -l, ksh -l

Standards

  • POSIX: jobs is a POSIX.1-2024 utility.

Writing portable scripts

  • Do not use jobs -x or stop in portable scripts: the FreeBSD and NetBSD pages do not document jobs -x, and FreeBSD sh has no stop. Use kill with a process ID instead.
  • Avoid jobs in non-interactive scripts. The Solnix page says Job Control is typically enabled for interactive shells only, and the BSD pages do not describe it.

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.