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. rc offers much the same capabilities as a traditional Bourne shell, but with a much cleaner syntax.


The latest release is rc-1.7.1.

(At one time, rc releases were also available from the University of Toronto FTP server, but that doesn't seem to be true anymore. The link is maintained here till I can get some definite information.)

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 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

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!)


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


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...

Searching on AltaVista (anyone remember it?) for "rc shell", I came across this page, which seems to be about something else...

Tim Goodwin