Your browser doesn't seem to support CSS, which this page uses for all styling. Don't be surprised if it looks kinda boring.

[Jump to nav]



This is the uber-.tcshrc. It's fairly well commented, and pretty straightforward. There's no docs other than the comments in the files, though, so if you're not at least passingly familiar with tcsh configuration, you may have trouble figuring some things out.

One of the big features this has is automatic detection of things like OS platform (for aliases/path settings), available paths (do we have /usr/X11R6/bin, or ~/bin, or /usr/games, or...), installed software (more vs. less), and so on; it makes cross-platform work much more straightforward.

Note that this is primarily my .tcshrc, not just a .tcshrc. I do make some effort to segregate out into my local overrides stuff that's peculiar to my environment, but there's a fair amount of stuff hardcoded in the script that may be peculiar to my tastes. A lot of the big stuff is configurable in the .tcshrc.conf, but a number of little things aren't so much.

Changes/additions I make, I'll copy up here when I remember. If you have changes/additions (especially new platforms; always a good thing), just email them to me, and I'll see if I can't work them in. Let me know about any bugs, too; I no longer use many of the platforms this was written to support, so some bits may have rotted without me noticing.

This should almost support pre-tcsh C shells, too. There are a number of known places it doesn't, which are mentioned in comments in the script. If you're unlucky enough to still be on a system that doesn't give you a modern tcsh option, you may still be able to use this with a little hacking.


The current release is 3.0.0 release. This is significantly reworked from earlier versions, and is now much more split up.

A README in the tarball gives a summary of usage. Generally, more (or symlink) the dir in the tarball go ~/.tcsh, then symlink ~/.tcsh/bootstrap.tcsh to ~/.tcshrc. Then never edit anything in ~/.tcsh/; instead, make a ~/.tcsh.local/ directory. Put a conf.tcsh in it with any config overrides (see ~/.tcsh/default.conf.tcsh for available choices), and put any additional aliases, env vars, etc. in ~/.tcsh.local/local.tcsh (or a number of other user- or host-dependent names; see the README for details).

Historical Versions

In pre-history, I just had the individual files here, and never really had "releases" so much as just "copy up my changes whenever it strikes me to". When I did a little reworking and cleanup of the structure of the files ca. 2006, I decided to also be at least a little more formal about it, so I made more of an actual release.

That yielded 2.0 release (leaving the 1. version numbers for the mishmash that it's previously been).

There are two files included in the tarball; the core .tcshrc, and the configuration file .tcshrc.conf. Stick them both in your home dir, fiddle with .tcshrc.conf 'till it suits you, and then forget about it for 10 years.

For overrides that the config file doesn't allow, .tcshrc will source any of a large number of other possible rc files from your homedir. Given that $HOST is the complete domain name if your system (, $HOSTNAME is just the hostname portion (foo), and $user is your username, the files sucked in will be (in order):

  • .tcshrc.local
  • .tcshrc.$user
  • .tcshrc.$HOST or .tcshrc.$HOSTNAME
  • .tcshrc.$user@$HOST or .tcshrc.$user@$HOSTNAME

For the $HOST/$HOSTNAME variants, it will load the full domain name variant if it exists, and if not will fall back to trying just the hostname. It's not an error for any (or all) of those alternate config files to not exist. I almost never use more than 1 or 2 of them on any given system, for instance. But it gives you the ability to share a homedir across machines (or even users), and still have different setups on them.

Simple, eh? Well, that's kinda the point.