uuencode(1c) on Solnix vs Linux and the BSDs
On Solnix, uuencode and uudecode are the illumos commands, with /usr/bin/uuencode on PATH. They are POSIX utilities and offer only the POSIX-style option set: uuencode -m, and uudecode -o and -p. The BSD extensions (uuencode -o and -r, uudecode -c, -i, -r, -s) are missing, and so are the GNU long options.
The manual pages
- Solnix: uuencode(1c) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: uuencode(1) sharutils-4.15.2
- FreeBSD: uuencode(1) 15.1-RELEASE
- OpenBSD: uuencode(1) 8.0
- NetBSD: uuencode(1) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
uuencode
What Solnix runs
A default Solnix system runs the illumos uuencode at /usr/bin/uuencode. No other variants are shipped. The page documents uuencode and uudecode together, and its section is 1C. It does not describe b64encode, b64decode, base64 or bintrans.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| FreeBSD, OpenBSD | uuencode -o | FreeBSD and OpenBSD uuencode accept -o output_file to write somewhere other than standard output. Solnix uuencode has no -o. It writes to standard output, so use shell redirection.Source: FreeBSD uuencode(1) SYNOPSIS, -o; OpenBSD uuencode(1) SYNOPSIS, -o; Solnix uuencode(1c) SYNOPSIS, OPTIONS |
| FreeBSD | uuencode -r | FreeBSD uuencode -r omits the initial and final framing lines. Solnix uuencode has no -r, and its output always carries the header with decode_pathname and the mode.Source: FreeBSD uuencode(1) -r; Solnix uuencode(1c) SYNOPSIS, DESCRIPTION |
| FreeBSD, OpenBSD | uudecode extra flags | FreeBSD and OpenBSD uudecode accept -c (several files), -i (do not overwrite), -m, -r (raw input) and -s. Solnix uudecode accepts only -o outfile and -p.Source: FreeBSD uuencode(1) uudecode options; OpenBSD uuencode(1) uudecode options; Solnix uuencode(1c) SYNOPSIS, OPTIONS |
| FreeBSD, OpenBSD | output path stripping | FreeBSD and OpenBSD uudecode delete any prefix ending in the last / from the output name unless -s is given. The Solnix page says the file is recreated with the header's filename and does not describe path stripping.Source: FreeBSD uuencode(1) -s; OpenBSD uuencode(1) -s; Solnix uuencode(1c) DESCRIPTION (uudecode) |
| FreeBSD, OpenBSD, NetBSD | decoding Base64 | The Solnix page documents -m only for uuencode. NetBSD uudecode takes -m and auto-detects the encoding by default. FreeBSD and OpenBSD uudecode -m takes effect only together with -r. The Solnix page does not say how uudecode handles Base64 input.Source: NetBSD uuencode(1) -m; FreeBSD uuencode(1) uudecode -m; OpenBSD uuencode(1) uudecode -m; Solnix uuencode(1c) SYNOPSIS, OPTIONS |
| Linux | GNU sharutils options | Linux uuencode (GNU sharutils) accepts --base64, -e/--encode-file-name (Base64-encode the output name), --help, --version and config-file options (-R, -r). Solnix accepts only -m and has no long options.Source: Linux uuencode(1) OPTIONS; Solnix uuencode(1c) SYNOPSIS, OPTIONS |
| Linux | writing to stdout on decode | The Linux page says an output-name of /dev/stdout makes uudecode emit the decoded file to standard output. On Solnix, uudecode -o /dev/stdout does that, and so does uudecode -p.Source: Linux uuencode(1) DESCRIPTION; Solnix uuencode(1c) OPTIONS (-o outfile, -p) |
| Linux | exit status | Linux uuencode returns 0, 1, 66 (config file could not be loaded) or 70 (libopts internal error). Solnix returns 0 on success and >0 on error, with no further values documented. Source: Linux uuencode(1) EXIT STATUS; Solnix uuencode(1c) EXIT STATUS |
| Linux | size expansion figure | The Linux page gives 37% expansion for traditional UU encoding and 35% for Base64. The Solnix page says the encoded file is 35% larger, without distinguishing the two encodings. Source: Linux uuencode(1) -m; Solnix uuencode(1c) NOTES |
| FreeBSD, OpenBSD, NetBSD | mode bits kept on decode | Solnix uuencode drops setuid, setgid and sticky bits from the recorded mode. FreeBSD, OpenBSD and NetBSD say uudecode does not retain the setuid and execute bits. The Solnix page does not mention execute bits. Source: Solnix uuencode(1c) DESCRIPTION (uuencode); FreeBSD uuencode(1) DESCRIPTION; OpenBSD uuencode(1) DESCRIPTION; NetBSD uuencode(1) DESCRIPTION |
| FreeBSD, OpenBSD | companion commands | FreeBSD and OpenBSD ship b64encode and b64decode in the same page, and FreeBSD also has base64 and bintrans. The Solnix page covers only uuencode and uudecode, so use uuencode -m for Base64 encoding.Source: FreeBSD uuencode(1) SYNOPSIS; OpenBSD uuencode(1) SYNOPSIS; Solnix uuencode(1c) SYNOPSIS |
Standards
- POSIX: uuencode is a POSIX.1-2024 utility.
- Solnix: Interface Stability: Standard.
- Linux: This implementation is compliant with P1003.2b/D11.
- OpenBSD: The uudecode and uuencode utilities are compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification. The flags [
-ciprs], uuencode-oand uudecode-mare extensions to it. - NetBSD: The uudecode and uuencode utilities conform to IEEE Std 1003.1-2008 (“POSIX.1”).
Writing portable scripts
- For portable scripts, use only uuencode [
-m] [file] name and uudecode [-ofile |-p] [file]. Redirect uuencode output with the shell instead of using-o, and avoid-r,-i,-sand-c. - Do not rely on uudecode picking Base64 input automatically. The manuals disagree: NetBSD documents auto-detection, the BSDs tie
-mto-r, and the Solnix page is silent.
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.