ftp(1) on Solnix vs Linux and the BSDs

On Solnix, ftp is the illumos ftp at /usr/bin/ftp, an interactive client with GSSAPI (Kerberos) options. Its synopsis has no URL or auto-fetch arguments, so the scripted fetching that FreeBSD, OpenBSD and NetBSD ftp offer is not documented. Several single-letter flags (-a, -f, -s, -T, -x) mean something different from the BSDs.

What Solnix runs

A default Solnix system runs the illumos ftp at /usr/bin/ftp. /usr/ucb/ftp is also shipped, but the bundle does not describe it. The Linux counterpart in the bundle is GNU inetutils 2.7 ftp, a different program from the Solnix one.

Differences

Compared withTopicWhat differs
FreeBSD, OpenBSD, NetBSD-a meaningSolnix ftp -a means GSSAPI authentication only, and the connection is closed if authentication fails. On FreeBSD, OpenBSD and NetBSD, -a bypasses normal login and logs in anonymously. A BSD script using -a for anonymous login gets GSSAPI on Solnix.
Source: Solnix ftp(1) -a; FreeBSD ftp(1) -a; OpenBSD ftp(1) -a; NetBSD ftp(1) -a
FreeBSD, OpenBSD, NetBSD-s meaningSolnix -s takes no argument and skips the SYST command sent on connection. On FreeBSD, OpenBSD and NetBSD, -s takes an address argument (srcaddr) used as the local source address for connections.
Source: Solnix ftp(1) -s; FreeBSD ftp(1) -s srcaddr; OpenBSD ftp(1) -s sourceaddr; NetBSD ftp(1) -s srcaddr
FreeBSD, NetBSD-T meaningSolnix -T timeout sets a global connection timer in seconds. On FreeBSD and NetBSD, -T takes direction,maximum[,increment] and sets a maximum transfer rate in bytes per second.
Source: Solnix ftp(1) -T timeout; FreeBSD ftp(1) -T; NetBSD ftp(1) -T
FreeBSD, NetBSD-f meaningSolnix -f forwards local security credentials to the remote server. On FreeBSD and NetBSD, -f forces a cache reload for transfers through FTP or HTTP proxies. OpenBSD's synopsis has no -f.
Source: Solnix ftp(1) -f; FreeBSD ftp(1) -f; NetBSD ftp(1) -f; OpenBSD ftp(1) SYNOPSIS
OpenBSD, NetBSD-x and -m meaningSolnix -x requests GSSAPI authentication and encryption, with data and command channel protection "private". On NetBSD, -x xfersize sets the socket buffer size. Solnix -m takes a GSS mechanism; on OpenBSD, -m forces the progress meter on.
Source: Solnix ftp(1) -x, -m; NetBSD ftp(1) -x xfersize; OpenBSD ftp(1) -m
FreeBSD, OpenBSD, NetBSDURL fetching in scriptsFreeBSD, OpenBSD and NetBSD ftp accept ftp:// and http:// URLs (OpenBSD and NetBSD also https://) and fetch them into the current directory. The Solnix synopsis takes only [hostname [port]], so scripts using URL fetching do not carry over.
Source: Solnix ftp(1) SYNOPSIS; FreeBSD ftp(1) SYNOPSIS, DESCRIPTION; OpenBSD ftp(1) SYNOPSIS; NetBSD ftp(1) SYNOPSIS
FreeBSD, OpenBSD, NetBSD-o output and -u uploadSolnix has no -o to save a fetched file under a chosen name. FreeBSD, OpenBSD and NetBSD have -o output. FreeBSD and NetBSD also have -u URL file ... to upload files from the command line.
Source: Solnix ftp(1) SYNOPSIS; FreeBSD ftp(1) -o, -u; OpenBSD ftp(1) -o; NetBSD ftp(1) -o, -u
all fourpassive and active modeSolnix -p enables passive mode and the page presents it as the way to get passive transfers. FreeBSD, OpenBSD and NetBSD call -p deprecated: they try passive by default and fall back to active. Linux has -A for active; Solnix has no -A.
Source: Solnix ftp(1) -p, SYNOPSIS; FreeBSD ftp(1) -A, -p; OpenBSD ftp(1) -A, -p; NetBSD ftp(1) -A, -p; Linux ftp(1) -A, -p
all four-t packet tracingThe Solnix page marks -t "packet tracing" as unimplemented. The Linux, FreeBSD and NetBSD pages describe -t as enabling packet tracing and do not say it is unimplemented.
Source: Solnix ftp(1) -t; Linux ftp(1) -t, --trace; FreeBSD ftp(1) -t; NetBSD ftp(1) -t
all four-V meaningSolnix ftp has no -V. On Linux, -V prints the program version. On FreeBSD, OpenBSD and NetBSD, -V disables verbose output and progress, overriding the terminal default.
Source: Solnix ftp(1) SYNOPSIS; Linux ftp(1) -V, --version; FreeBSD ftp(1) -V; NetBSD ftp(1) -V; OpenBSD ftp(1) SYNOPSIS
Linuxlong optionsLinux (GNU inetutils) ftp has long options such as --passive, --no-login, --no-prompt, --no-glob and --netrc=NETRC. The Solnix page documents single-letter options only. Linux -n, -i and -g match Solnix in meaning.
Source: Linux ftp(1) options; Solnix ftp(1) SYNOPSIS, -n, -i, -g
all fourmissing -4, -6, -e, -NSolnix ftp has no -4/-6 to force an address family and no -e to disable command-line editing. -N selects a netrc file on Linux, FreeBSD and NetBSD, and an error-report name on OpenBSD. Solnix has no -N.
Source: Solnix ftp(1) SYNOPSIS; Linux ftp(1) -4, -6, -e, -N; FreeBSD ftp(1) -N; OpenBSD ftp(1) -N; NetBSD ftp(1) -N

Standards

  • POSIX: ftp is not a POSIX.1-2024 utility.

Writing portable scripts

  • Use only -d, -g, -i, -n and -v in portable scripts. They have the same meaning on every system in the bundle. Avoid -a, -f, -s, -T, -x and -V, which differ.
  • For non-interactive transfers across systems, feed commands to ftp -n on stdin. Do not rely on URL arguments, which the Solnix synopsis lacks.

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.