This is release 1.5 of rc. Read COPYRIGHT for copying information. All files are Copyright 1991, Byron Rakitzis. COMPILING rc was written in portable ANSI C. If you don't have an ANSI compiler like gcc or something close (e.g., sgi's cc) read further down on how to convert rc's source to old C. Please read the Makefile, and copy config.h-dist to config.h and examine the parameters in there; they let you customize rc to your Unix. For example, some Unices support /dev/fd, or some have FIFOs. If you do not perform this step then the Makefile will automatically copy config.h-dist to config.h and proceed assuming that everything is ok. Note that config.h-dist supplies default parameter configurations for SunOS, NeXT-OS, Irix, Ultrix and some others. Finally, if you're having trouble you may want to look at proto.h and see if everything in there jibes with your system. After you've built rc, you may wish to run it through a test script to see that everything is ok. Type "make trip" for this. This will produce some output, and end with "trip is complete". If the trip ends with "trip took a wrong turn..." then drop me a line. To compile the history program, go into the history subdirectory and type "make". This will create a binary called "history". However, in order for it to work as advertised it must be installed into your bin as four files named -, --, -p and --p. (these can be soft or hard links to the same file) rc may also be linked with either GNU readline (10,000+ lines of code!) or a supplied readline-like system by Simmule Turner (1,000+ lines of code). See the Makefile on how to do this. BUGS Send bug reports to byron@archone.tamu.edu. If a core dump is generated, sending me a backtrace will help me out a great deal. You can get a backtrace like this: ; gdb rc core (gdb) where <<>> (gdb) Also, always report the machine, compiler and OS used to make rc. It's possible I may have access to a machine of that type, in which case it becomes much easier for me to track the bug down. If you are using gcc, please make sure that you have a recent version of the compiler (1.39 and up) before you send me a note; I have found that older versions of gcc choke over rc and generate bad code on several architectures. (this is especially relevant for the the MIPS architecture) FEEPING CREATURISM See the end of the man page, under "INCOMPATABILITIES" for (known?) differences from the "real" rc. Most of these changes were necessary to get rc to work in a reasonable fashion on a real (i.e., commercial, non-Labs) UNIX system; a few were changes motivated by concern about some inadequacies in the original design. YACC The yacc that Sun ships with SunOS 4.1.1 calls malloc() to allocate space for the state stack, and requires a call to YYACCEPT or YYABORT to free this memory. This means that if rc takes an interrupt while parsing a command (say, if ^C is typed), yacc will leak away this memory. The solution is to use a yacc which statically allocates this array, such as the yacc in the BSD distribution. Berkeley yacc- generated y.tab.c and y.tab.h are shipped with rc in case you cannot get hold of Berkeley yacc. OLD C If you need to convert rc's source into K&R C, you need to run the source through a filter called "unproto", posted in comp.sources.misc. A sample "cpp" shell script that I used to run unproto under SunOS is supplied with rc. CREDITS This shell was written by me, Byron Rakitzis, but kudos go to Paul Haahr for letting me know what a shell should do and for contributing certain bits and pieces to rc (notably the limits code, print.c, most of which.c and the backquote redirection code), and to Hugh Redelmeier for running rc through his fussy ANSI compiler and thereby provoking interesting discussions about portability, and also for providing many valuable suggestions for improving rc's code in general. Finally, many thanks go to David Sanderson, for reworking the man page to format well with troff, and for providing many suggestions both for rc and its man page. Thanks to Boyd Roberts for the original history.c, and to Hugh again for re-working parts of that code. Of course, without Tom Duff's design of the original rc, I could not have written this shell (though I probably would have written *a* shell). Almost of all of the features, with minor exceptions, have been implemented as described in the Unix v10 manuals. Hats off to td for designing a C-like, minimal but very useful shell. Tom Duff has kindly given permission for the paper he wrote for UKUUG to be distributed with this version of rc (called "plan9.ps" in the same ftp directory as the shell). Please read this paper bearing in mind that it describes a program that was written at AT&T and that the version of rc presented here differs in some respects.