rc

[fork] interactive rc shell
Log | Files | Refs | README | LICENSE

commit 8b49006e571ddeea95da03b0135262298801de13
parent 731e13e89b59f94c8ee37f8387276dcc0d19f119
Author: tgoodwin <tgoodwin>
Date:   Wed, 11 Feb 1998 14:06:01 +0000

Initial revision

Diffstat:
AINSTALL | 141+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 141 insertions(+), 0 deletions(-)

diff --git a/INSTALL b/INSTALL @@ -0,0 +1,141 @@ +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. + +rc uses GNU autoconf and automake. The following commands are all you +need to configure, build, test, and install rc. + + $ sh configure + $ make + $ make trip + # make install + +This will build rc in the source directory. You can also run these +commands from any other directory, specifying the path to the configure +script, and rc will be built in that directory. This is particularly +useful if you are building rc for multiple architectures. + +There are lots of options you can give to configure to modify rc's +behaviour. You can also select a command line history library to link +against. For a summary of all options, run `sh configure --help'. + +You can specify Makefile variables by setting the corresponding +environment variables. For example, you might want to set `CC=cc', to +prevent configure looking for gcc, or set an initial value for `LIBS', +as in the example below. + +Here are the configure options you may want to use, in approximately +descending order of usefulness. + + --with-editline + + This option tells rc to use Simmule Turner's and Rich $alz's editline + package, which you can get from the following location. This is + essentially a lightweight version of GNU readline, providing EMACS + style command line editing and history. + + ftp://ftp.cygnus.co.uk/people/tgoodwin/editline.tar.gz + + If the editline library is not installed in a standard place, you can + tell configure where to find it by setting the environment variable + LIBS. For example, the maintainer builds rc by copying libedit.a into + the rc build directory and then running this configure command. + + LIBS=-L. sh ../rc-1.5b3/configure --with-editline + + --with-readline + + This option tells rc to use the GNU readline package, which is similar + to editline, but has many more features. The readline package is + over 6 times the size of editline (whether you count lines of code, + or the library itself). As for editline, you can set the environment + variable LIBS if your readline library is not installed in a standard + place. + + --enable-history + + Use this option if you want to build and install the programs that + support a crude history mechanism. + +You can't use `--with-editline' and `--with-readline' together, of course, +and if you have either of those you probably don't want to bother with +`--enable-history'. + + --prefix=/path + + By default, `prefix' is /usr/local, which means that `make install' + installs rc (and possibly the history programs) in /usr/local/bin, and + man pages in /usr/local/man/man1. Use this option to change where + `make install' puts things. + + --disable-builtin-echo + + By default, the `echo' command is builtin to rc for efficiency reasons. + It is the only builtin which is not essential, and purists may wish + to omit it. + + --disable-def-interp + --enable-def-interp=/bin/foo + + By default, a program that fails with "Exec format error" is handed to + /bin/sh. This does the Right Thing for scripts that start with `:' to + indicate that they are sh scripts. You can disable this behaviour + entirely, or specify a different default interpreter. + + --disable-def-path + --enable-def-path="/usr/local/bin","/usr/bin" + + By default, if rc is started with no PATH, it uses a default path. + The default path is constructed at configure time, and consists + of each of the following directories that exist, in order. + + /usr/local/bin /usr/bin /usr/ucb /bin . + + You can disable this, or specify a different default path. Note + that the quote marks (") must be seen by configure; you will + probably need to quote them to your shell. (Not if it's already + rc, but then you will need to quote the `='.) + + --disable-job + + By default, rc puts backgrounded processes into a new process group, + as though it were a job control shell (it isn't). This is usually + needed to work around bugs in application programs which install + signal handlers for the keyboard signals without checking whether the + signal was being ignored. This option disables the default behaviour, + making rc behave like a traditional sh. You are unlikely to want this + option on any Unix system. + + --disable-protect-env + + By default, rc encodes special characters in environment variables. + This is necessary on all known Unix systems to prevent sh either + dying or discarding the variables. This option disables the default + behaviour. You are unlikely to want this option on any Unix 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..." please contact the maintainer. (If +you've built in either of the command line history libraries, the trip +will fail near the end with `trip took a wrong turn: dot -i'.) + +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.