Chapter 4. The Shell Startup Files

In This chapter:

  • Startup and Shutdown Files

  • Getting To Know .cshr c and .login

  • Modifying .cshrc and .login

  • Using Variables

  • Organizing Your Startup Files

  • The .logout File

When you log in, your shell doesn't operate in a vacuum. Its behavior is affected by your working environment, which includes:

  • Terminal settings, such as your backspace and line kill characters

  • Variable values

  • Aliases

  • Key bindings for the command-line editor (tcsh only)

  • Programmed completions (tcsh only)

All of the above are initialized in the shell startup files.

This chapter provides guidelines for modifying your startup files, explains how to set variables, and describes how to organize startup file contents. It's important to understand and know how to modify these files, since your working environment strongly influences how easily you get your work done. Much of the shell's power is tapped by using your startup files to set up your environment the way you like.

Startup and Shutdown Files

When you log in, your shell sets up its environment by reading two files named .cshrc and .login from your home directory. If the files exist, the shell executes their commands before displaying its first prompt.

tcsh reads startup files a little differently than csh. If you have a file named .tcshrc in your home directory, tcsh reads that instead of .cshrc. In order to avoid repeating a qualifying phrase throughout this handbook, it should be understood that references to .cshrc mean ".tcshrc if it exists and you're using tcsh, .cshrc otherwise." Any exceptions to this convention will be clear from the context.

In this chapter, I assume that you are in your home directory, and I refer to the startup files as .cshrc and .login. Elsewhere, I make no such assumption and refer to the files as ˜/.cshrc and ˜/.login, to indicate explicitly that they're located in your home directory.

Your shell might also read system-wide startup files before reading the startup files in your home directory. Not all versions of the shell read system-level files, and the names of the files vary from system to system (they might be named /etc/csh.cshrc and /etc/csh.login, for instance). System administrators sometimes use these files to standardize aspects of the working environment across accounts. You can either leave those settings in place, or use commands like unset, unsetenv, unalias, and uncomplete to remove them.

If a .logout file exists in your home directory, the shell reads commands from it when you log out. Your shell might also read a system-wide file such as /etc/csh.logout before reading the one in your home directory. Like /etc/csh.cshrc and /etc/csh.login, /etc/csh.logout can be used by system administrators.

Get Using csh & tcsh now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.