Received a scan of an internal Bell Labs memo from 1982 today that showed an alternative Shell for Unix 4.0(!) called CL by Martin Sturzenbecker. It had typed variables and was referenced by David Korn in the 1986 ksh memo. Much thanks to the Bell Labs/Nokia archivists for finding it!
awb
From: #berlin
Lives in: #sanfrancisco
Passionate about command interfaces and terminals.
Emacs contributor.
Formerly curator and historian at https://computerhistory.org/
Question for 1980s/early-1990s Unix/Linux users: What scripting languages did you encounter other than the various Shells, AWK, Perl, Tcl, maybe early Python?
Looking for general purpose languages that would let you run a stand-alone script. I don't think Rexx saw significant use on Unix. Any other popular languages maybe only in certain geographies (like Ruby/Lua initially)? How about other non-Unix languages that made the jump?
I have been reading some documents on general purpose macro processors from the 1960s lately. While it seems like they are seen as some kind of archaic technology nowadays, Web template engines are central to many workflows. Brown's ML/I dissertation talks about text generation as one of the applications for macro processors and Web template engines fall squarely into that category.
As if patterns, extended patterns, and BRE/ERE regexes in Shell scripts weren't confusing enough, the string operands for the tr utility really look like regexes, but aren't. There is no need for a bracket expression for character classes (it's implied) and of course this is historically different between SystemV, BSD, and the XPG standard that POSIX is based on.
Ran into two compatibility issues with my Shell scripts between different Ubuntu versions: dpkg-deb changed its default compression and pigz changed where it sends --version info (used to be stderr, then stdout).
All this happened years ago, but OS version upgrades at the enterprise level are hard, so it's good to be aware of differences (like that the non-GNU AWK in Ubuntu Xenial is a mawk version that requires quoting a slash in bracket expressions.)
Delivered my "The Zen of Shell Scripting" presentation today. On my intro slide I mention that Shell is often treated as second class because it is "not a real language" and at the same time "too hard to learn".
Seemed like people enjoyed the talk and will take Shell scripting more seriously now. Success!
Why should you care about the POSIX Shell? Because it is the *system* Shell for POSIX systems!
It's the default Shell when executing commands with e.g., cron, in a Makefile or Dockerfile, the Ansible Shell module, and anything else that uses the system(3) call explicitly like C, m4, AWK, Perl, Tcl, Python, etc. Some will honor the SHELL environment variable (like ex), some will not (like ed).