[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.
-
,