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.

Downloads
---------

The latest release is ``rc-1.7.1``.

* source code, gzipped tar: `rc-1.7.1.tar.gz`_
* source code, tar: `rc-1.7.1.tar`_
* i386 RPM: `rc-1.7.1-1.i386.rpm`_
* source RPM: `rc-1.7.1-1.src.rpm`_

.. _rc-1.7.1.tar.gz: /software/download/rc/rc-1.7.1.tar.gz
.. _rc-1.7.1.tar: /software/download/rc/rc-1.7.1.tar
.. _rc-1.7.1-1.i386.rpm: /software/download/rc/rc-1.7.1-1.i386.rpm
.. _rc-1.7.1-1.src.rpm: /software/download/rc/rc-1.7.1-1.src.rpm

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

.. _ftp server: ftp://ftp.sys.utoronto.ca/pub/rc/

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.

.. _postscript version of this paper: /software/download/rc/plan9.ps
.. _updated html version: /software/article/rc-duff

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

.. _master archive: ftp://prep.ai.mit.edu/gnu/readline/
.. _editline-1.5: /software/download/rc/editline-1.5.tar.gz
.. _vrl-1.3.3: /software/download/rc/vrl-1.3.3.tgz

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

.. _rob pike: http://www.cs.bell-labs.com/who/rob/
.. _sam: http://netlib.bell-labs.com/netlib/research/
.. _wily: http://www.cs.yorku.ca/~oz/wily/
.. _9term: http://www.cs.usyd.edu.au/~matty/9term
.. _9wm: http://sources.isc.org/X/window-managers/9wm-1.1.txt
.. _9menu: ftp://ftp.freefriends.org/arnold/Source/9menu.shar.gz
.. _plan 9 itself: http://www.cs.bell-labs.com/plan9dist/

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

.. _ctrl-d patch: /software/download/rc/ctrl-d.patch

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.

.. _notes: /software/article/rc-notes

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

.. _this page: http://www.wineloverspage.com/user_submitted/recipes/73.html

Tim Goodwin

