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.
The manual pages
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 with | Topic | What differs |
|---|---|---|
| FreeBSD, OpenBSD, NetBSD | -a meaning | Solnix 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 meaning | Solnix -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 meaning | Solnix -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 meaning | Solnix -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 meaning | Solnix -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, NetBSD | URL fetching in scripts | FreeBSD, 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 upload | Solnix 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 four | passive and active mode | Solnix -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 tracing | The 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 meaning | Solnix 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 |
| Linux | long options | Linux (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 four | missing -4, -6, -e, -N | Solnix 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,-nand-vin portable scripts. They have the same meaning on every system in the bundle. Avoid-a,-f,-s,-T,-xand-V, which differ. - For non-interactive transfers across systems, feed commands to ftp
-non 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.