[Sorry, no articles about bash and tcsh variables. This book focuses on the "base" shells, sh and csh. csh variables work in tcsh, and many work (in slightly different forms) with bash too. For a complete list, check your bash or tcsh manpage. -JP]
The C shell recognizes and uses environment variables, but it also uses a great many simple shell variables (6.8) to control its own operation. These variables don't need to be put into the environment so they can be passed to subshells (38.4), because every instance of the C shell always reads the .cshrc file (2.2). Simple shell variables set there are thus propagated to every C shell.
Many of the special C shell variables are simply used as flags; that is, they need not be set to any particular value. The shell simply tests whether they exist or not. They are set simply by saying:
setvariable
rather than:
setvariable
=value
Here are some of the special variable names used by the C shell:
The cdpath (14.5) variable stores a list of directories. You can cd to subdirectories of these by typing just the subdirectory name.
If the echo (8.17) variable is set, the shell will show the command line, after all variable and history (11.7) substitutions, before executing it. (This is very handy for debugging scripts such as .cshrc.)
If the verbose (8.17) variable is set, the shell will show the command line after history substitution but before any other substitutions.
The Bourne shell -v and -x options (46.1) work like the verbose and echo variables.
If the filec or complete variable is set, the shell performs filename completion (9.8). The fignore (9.9) variable makes filename completion skip filenames that end with certain characters like .o.
The cwd (14.13) variable shows the absolute pathname of the current directory. The cd, pushd, and popd commands set it.
The hardpaths (14.13) variable fixes errors in the cwd variable that occur when you cd through symbolic links.
Use the
histchars (11.15)
variable to set different history characters than
exclamation point (!
) and caret (^
).
The history (11.1) variable stores the number of shell command lines to save. The savehist (11.11) variable stores the number of lines of shell history to be saved when you log out. This amount of history is saved in a file called .history in your home directory, and the lines are restored the next time you log in.
If you set
ignoreeof (3.5),
the shell won't respond to the end-of-file character (CTRL-d) and will
require you to type logout
or
exit
(38.4)
to log out.
This can
save you from ending the shell accidentally (or logging out).
The shell can tell you about new electronic mail (1.33) or changes in other files with the mail (21.8) variable.
Stop the >
redirection character from overwriting files with
noclobber (13.6).
The noglob variable stops wildcard expansion (15.1). (There's an example in article 5.4.)
Set nonomatch when you want the C shell to treat nonmatching wildcards like the Bourne shell does . (15.4)
The notify (12.6) variable asks the shell to tell you right away if a background job finishes or is stopped.
The list of directories that the shell searches for commands is stored in path (6.5).
Your login name from the USER or LOGNAME (6.3) environment variable is also stored in the C shell variable named user.
The shell's command-line prompt is set by the prompt (7.2) variable. (The PS1 (6.3) environment variable is the Bourne shell equivalent. You can set the Bourne shell's secondary prompt (9.13), too, in PS2.)
The exit status (44.7) of the last command is stored in the csh variable named status and the sh ? (question mark) variable.
If a job takes more CPU seconds than the number set in the time (39.3) variable, the csh will print a line of statistics about the job.
-
,