Tcsh is an enhanced, but completely compatible version of the Berkeley UNIX C shell (csh). The project is a command language interpreter usable both as an interactive login shell and a shell script command processor.
It includes a command-line editor, programmable word completion, spelling correction, a history mechanism, job control and a C-like syntax.
Tcsh has been ported to most unix variants, and can be tinkered to work in unix systems that it has not ported yet. See the Ported file for a more complete list of ported systems and in the config directory for a configuration file that matches your system.
Tcsh also runs under VMS/POSIX and OS/2+emx; the OS/2 port is not complete yet.
0. Try running "configure". If that works, goto step 6. If you are using imake, try xmkmf and goto step 3. If imake does not work, copy Makefile.std to Makefile.
1. Look at the Makefile and make sure that you are using the right compilation flags.
2. Copy the appropriate for your machine and OS config file from the config subdirectory into config.h. Consult the file "Ported" for settings known to work on various machines.
If you are trying to compile tcsh on a machine for which there is no config file yet, you will need to create a config file using as a template one of the supplied ones.
If you get tcsh working on a new machine, I'd appreciate a copy of the config file plus additional information about the architecture/OS.
If you are creating a new config file, look very hard at BSDJOBS, BSDSIGS, and BSDTIMES if you are running a non-BSD machine. For vanila SysV, these would all be #undef-ed, but others may vary (such as A/UX or HPUX).
On a pyramid, compile in the UCB universe even if you are running under the ATT universe usually; it will work anyway, and you get job control for free.
3. Look at config_f.h, and enable or disable any features you want. It is configured the way I like it, but you may disagree.
If you do not have NLS, then locale.h will not be found. Undefine it and things should work ok. On the other hand, if you have NLS you might as well use it...
4. Look at host.defs to make sure that you have the right defines to set the environment variables "HOSTTYPE", "MACHTYPE", "OSTYPE" and "VENDOR" correctly. If you need to make changes, PLEASE SEND THEM BACK TO ME.
5. You may want to adjust the TCSH_BINDIR and TCSH_MANDIR entries in the Makefile. These are the directories that tcsh, and the tcsh.1 man entry will be placed in when you do a "make install" and "make install.man" respectively.
If you decide to install tcsh somewhere other than in /usr/local/bin/tcsh, you should #define _PATH_TCSHELL "/your/installation/directory/tcsh" in pathnames.h.
6. If you've changed any of the configuration variables you may need to re-run configure.
8. Read the documentation while you are waiting. The file tcsh.man is in standard [nt]roff -man format.
If you like, you can run the tcsh.man2html script (requires Perl) to generate an HTML version of the manpage which you can read with Mosaic, lynx or other HTML browser.
9. Test tcsh by typing ./tcsh to see that it has compiled correctly. The history command should give a time stamp on every entry. Typing normal characters should echo each exactly once.
Control-A should put the cursor at the beginning of the input line, but after the prompt. Typing characters after that should insert them into the line. If you have job control make sure that stopping and restarting jobs works.
Make sure you can ^C in the middle of the input line. Also make sure that pipelines work correctly and there are no races. Try 'echo | cat | cat | cat | cat | more' a couple of times.
If you have job control, try this command in the background and bring it in the foreground when it stops for tty output. Also make sure that the ioctl() modes are preserved. Get into vi, enter and exit input mode and suspend it, background it and foreground it again.
After all that, lastly make sure that the tty process group manipulation is happening correctly. Try ftp to some host. If your passwd appears on the screen, you have lost /dev/tty. Otherwise everything is fine.
10. Once satisfied that tcsh is working correctly, complete the installation by typing "make install" to install the binary, and "make install.man" to install the documentation. Don't forget to look at complete.tcsh for useful completions...