tobold.org

correct • elegant • free

rc - a shell

I maintain the rc shell. This is a reimplementation for Unix, by Byron Rakitzis, of the Plan 9 shell.

The original rc was designed and implemented by Tom Duff at Bell Labs. It has a small feature set similar to a traditional Bourne shell, but with a much cleaner and simpler syntax. Among other things, this makes rc much better than Bourne-compatible shells at handling filenames which contain spaces. Thus, writing rc scripts is less error-prone than writing sh scripts.

This reimplementation of rc can be linked with GNU readline, BSD libedit, or similar line editing libraries, to make a pleasant interactive shell.

Downloads

The latest release is rc-1.7.4.

rc releases are also available from the University of Toronto FTP server, (awaiting upload of the latest).

SHA256 sums

8294f6e2c30ca327e9fe83d2f8b27ca5043ab146ee0aac7da4b68f5ee4849e75 rc-1.7.4.tar
5ed26334dd0c1a616248b15ad7c90ca678ae3066fa02c5ddd0e6936f9af9bfd8 rc-1.7.4.tar.gz

008bab5e4acdcfb5eff0d52034f96bbdc3132f81221ac4de0e790d70d0723086 rc-1.7.3.tar
d7bfdb534d4bb3096f0f7da93499ee9d2757862eba8d7b816dff8e0112d88405 rc-1.7.3.tar.gz

Distributions

rc is available pre-built for Debian: sudo apt-get install rc and soon Fedora, plus RHEL and CentOS via the EPEL repositories: sudo yum install rc.

Development

If you are interested in developing for rc, please see the github repository

Tom Duff's papers

The author of the original rc, Tom Duff, presented a paper about it to the UKUUG (United Kingdom Unix Users' Group). He has kindly given permission for us to reproduce the PostScript version of this paper.

An updated HTML version is also available.

Mailing list

The rc mailing list was rc@hawkwind.utcs.utoronto.ca but this seems to be defunct at present. I hope to create a new rc and es community around this web site.

(Subscription requests should be sent to rc-request@hawkwind.utcs.utoronto.ca.)

Libraries for command line editing

rc can be linked against a number of libraries which provide Emacs style command line editing and history.

  • GNU readline is available from the FSF master archive and its many mirrors.
  • A lightweight alternative is editline. The latest version is editline-1.5.
  • Another alternative is vrl. The current version is vrl-1.3.3.

Associated packages

rc uses a set of printing routines originally written by Paul Haahr. Scott Schwartz has developed this as a separate package which is available from comp.sources.unix v29i017.

There are a number of other programs which, like rc, implementations of Plan 9 tools for Unix + X windows:

(Many of these links are now out of date. Watch this space!)

  • sam, probably the world's finest editor, by Rob Pike;
  • wily, a reimplementation of the Plan 9 acme (a minimalist "integrated development environment") by Gary Capell;
  • 9term, an X windows terminal emulator by James Matthew Farrow;
  • 9wm, an X window manager by David Hogan;
  • 9menu (allows you to create X menus from the shell, where each menu item will run a command: it meshes well with 9wm).

Plan 9 itself, including Duff's original rc, is now available (and there's a rather splendid easy-to-install port of all this to Unix, but I don't have the link handy right now: watch this space!)

There's an rc mode for vim available.

Patches

The notion of software configuration via patches seems really pretty quaint in the 21st century. Still, this particular patch has been following rc around for a long time. I think I'm desperately unlikely to make it a compile-time or run-time option any-time soon, so if you really want this behaviour, here it is.

  • The ctrl-D patch prevents an interactive rc from exiting when it sees end of file on standard input, achieving much the same effect as setting the special variable IGNOREEOF in bash, or ignoreeof in tcsh

Notes

I've started making notes as I hack on rc. Anyone who is, or would like to be, familiar with the internals of rc is encouraged to look at them.

(Although my notes are currently in a flat file, they really should consitute a blog. Did blogs exist in 2001? I can't remember. But even if so, I didn't have an easy way to create one. At some point, this document will be converted into a real blog; or possible just merged into my own blog.)

Something else...

In the dim and distant past, before the phrase vanity googling had been coined, I was searching on AltaVista (anyone remember it?) for rc shell. I came across this page, which seems to be about something else...

This is the official dish of rc, to be served at all conventions and other gatherings of rc users.

Toby Goodwin