back
12 comments
Fun stuff. My one contribution was the libc function getsubopt() which originated in what was the first release of Solaris (code named Zeus) and picked up in the Net-2 release.

I was the engineer responsible for harmonizing the 'mount' command between SunOS (aka BSD 4.2+) and SysV R3.2. The way that worked usually is that the command would get options from both sides of the tree and we would argue about the ones that overlapped, but in the case of mount the AT&T System engineer was totally appalled that mount had a -all option to mount everything in the /etc/fstab file. AT&T was pushing a new script named 'mountall' what would mount all file systems. They also hated multi-letter options like '-o rw,noatime'. Their argument was that there wasn't a subroutine in the C library to parse multi-letter options like we had for the mount command.

So I invented getsubopt which, with Bill Shannon's sign off, we made a 'standard part of SunOS'. And then we added it as something to be included in the consolidated lib C.

Going through that exercise of trying to harmonize System V and SunOS into the one true UNIX was the weirdest thing. AT&T had 'system engineers' who never wrote code, and Sun just had engineers who actually wrote code. Some of the technical disagreements were settled at the 'VP' level (Eric Schmidt at the time) where Eric and his AT&T counter part would 'trade' concessions that had escalated to that level. Like I said, very weird.

I was hoping this would answer a recent question about the origin of the `unlink(1)` command. [1] The table says it appeared in FreeBSD 3.5.0, but in digging I found that FreeBSD introduced it after NetBSD, who introduced it "for XCU5's sake, and due to popular demand." [2] So `unlink(1)` must have existed in some even earlier Unix variant.

So the history of these things remains murky. Part of that is it's difficult to find old ("superseded") versions of the XCU / XOpen specs, let alone trace the new things each revision introduced to the sometimes-now-extinct Unix variants they first appeared in.

I do love the `unix-history-repo` and applaud the ongoing work there!

[1] https://twitter.com/alangrow/status/966081208487575552

[2] https://github.com/NetBSD/src/commit/54af00c6ee446afe395f319...

unlink(1) is indeed in SUSv2/XCU5:

http://pubs.opengroup.org/onlinepubs/7908799/xcu/unlink.html

I couldn't get my hands on SUSv1/XCU4. It's supposedly available here:

https://publications.opengroup.org/c43x

But you have to log in to download, and I gave up upon seeing account creation form with 16 required fields.

"Open" in "The Open Group" is a bad joke.

According to the HISTORY section at the bottom of the OpenBSD man page for unlink() , it first appeared in Version 1 AT&T UNIX. [1]

FWIW, all OpenBSD man pages have a history section at the bottom that notes when the command first appeared.

[1] https://man.openbsd.org/unlink

OpenBSD doesn't have the "unlink" command-line tool.

The manpage you pointed to is about the "unlink" system call.

Sorry, I missed that.
I think you mean superseded.
Fixed, thanks.
For those interested, here is a relevant link: http://bhami.com/rosetta.html

Personally, I tend to focus on GNU coreutils on the gnu/linux side.(https://www.gnu.org/software/coreutils/manual/coreutils.html)

I can't find my list of non-gnu linux kernel utilities at the moment. I think it's in the older kernel documentation.

This looks like this only traces the original Unix and the BSD lines. I assume that's because that's what the sources are available for. It would be cool to see what came from the SysV side of things over time, but, one would have to get the sources for a SysV-derived Unix. I'd think Illumos would count, having come from Solaris. But that doesn't help much either, does it, since Illumos is a modern Unix, and not a historic version?
Ah looks interesting. Contains my two favorite things: unix history, and slickgrid.
How do I read this?