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.


Historically, I've just had the individual files here, and never really had "releases" so much as just "copy up my changes whenever it strikes me to". I'm trying to be at least a little more formal about it, so we'll try having actual releases now and see how that goes.

So, let's start with a 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.

For online viewing (or whatever else), here are the two files individually as well.

  • .tcshrc.conf is the config file with a bunch of flippable settings. See the comments for what they do and what the choices are.
  • .tcshrc is the main beast; all sorts of switches, action, fun stuff. The idea is that, once you've got .tcshrc adjusted to your general taste, you should never have to tweak it on a per-machine basis. The settings go in .tcshrc.conf, and the above-mentioned additional files allow you to override or add other stuff. Ideally, you should never have to tweak it at all in fact; that way if I ever get around to making and releasing more changes, you can just drop them in without having to worry about merging local changes.

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