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

rc releases are also available from the University of Toronto FTP server, including the latest.

SHA256 sums

237efab0834f026716fbe3a6b8701af34da52d33d1b906989d4080c45dadf356 rc-1.7.2.tar
04e762d15cccb3c3191a0f40e5158f176a21707f89cb9e0b04c8085ea7246be5 rc-1.7.2.tar.gz
4f6e7e7f590f8f8f98a9bb80dc93721404c61ad05e9da25b6f36f1308f7ea915 rc-1.7.2-2.src.rpm
a2f3914eaa60818e4b083d3a0a5f21e5ec58b853433b5892c6d6cb8e8bc074f8 rc-1.7.2-2.x86_64.rpm

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

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