kernel: Clean up some no longer used types from makesyscalls.sh.
[dragonfly.git] / contrib / tcsh-6 / tcsh.man
1 .\"
2 .\" Copyright (c) 1980, 1990, 1993
3 .\"     The Regents of the University of California.  All rights reserved.
4 .\"
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
7 .\" are met:
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\"    notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\"    notice, this list of conditions and the following disclaimer in the
12 .\"    documentation and/or other materials provided with the distribution.
13 .\" 3. Neither the name of the University nor the names of its contributors
14 .\"    may be used to endorse or promote products derived from this software
15 .\"    without specific prior written permission.
16 .\"
17 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 .\" SUCH DAMAGE.
28 .\" 
29 .\" Style notes for the tcsh man page:
30 .\" 
31 .\" - Tags in lists are bold, except in the FILES section where they are
32 .\"   italic.
33 .\" 
34 .\" - References are bold for section headings and environment and shell
35 .\"   variables and italic for commands (externals, builtins, aliases, and
36 .\"   editor commands) and arguments to commands.
37 .\" 
38 .\" - Be careful with the .B and .I macros: they handle only a limited number
39 .\"   of words. Work around this with \fB and \fI, but only if absolutely
40 .\"   necessary, because tcsh.man2html uses .B/.I to find name anchors.
41 .\" 
42 .\" - Indent in multiples of 4, usually 8.
43 .\" 
44 .\" - Use `', not '' or "", except of course in shell syntax examples.
45 .\"   '' at the beginning of a line will vanish!
46 .\"
47 .\" - Use \` for literal back-quote (`).
48 .\"
49 .\" - Use \e for literal backslash (\).
50 .\" 
51 .\" - Use \-, not -.
52 .\" 
53 .\" - Include the tilde when naming dot files. `~/.login', not `.login'.
54 .\" 
55 .\" - Refer to external commands in man page format, e.g., `csh(1)'. However,
56 .\"   tcsh is `tcsh', not `tcsh(1)', because this is the tcsh man page (and
57 .\"   see the next note anyway).
58 .\" 
59 .\" - Say `the shell', not `tcsh', unless distinguishing between tcsh and csh.
60 .\" 
61 .\" - Say `shell variable'/`environment variable' instead of `variable'
62 .\"   and `builtin command'/`editor command' instead of `builtin' or `command'
63 .\"   unless the distinction is absolutely clear from context.
64 .\" 
65 .\" - Use the simple present tense. `The shell uses', not `The shell will use'.
66 .\" 
67 .\" - IMPORTANT: Cross-reference as much as possible. Commands, variables,
68 .\"   etc. in the reference section should be mentioned in the appropriate
69 .\"   descriptive section, or at least in the reference-section description
70 .\"   of another command (or whatever) which is mentioned in a description
71 .\"   section. Remember to note OS-specific things in "OS variant support",
72 .\"   new features in NEW FEATURES and referenced external commands in SEE
73 .\"   ALSO.
74 .\" 
75 .\" - tcsh.man2html depends heavily on the specific nroff commands used in the
76 .\"   man page when the script was written. Please stick closely to the style
77 .\"   used here if you can. In particular, please don't use nroff commands
78 .\"   which aren't already used herein.
79 .\" 
80 .TH TCSH 1 "4 Dec 2019" "Astron 6.22.02"
81 .SH NAME
82 tcsh \- C shell with file name completion and command line editing
83 .SH SYNOPSIS
84 .B tcsh \fR[\fB\-bcdefFimnqstvVxX\fR] [\fB\-Dname\fR[\fB=value\fR]] [arg ...]
85 .br
86 .B tcsh \-l
87 .SH DESCRIPTION
88 \fItcsh\fR is an enhanced but completely compatible version of the Berkeley
89 UNIX C shell, \fIcsh\fR(1).
90 It is a command language interpreter usable both as an interactive login
91 shell and a shell script command processor.
92 It includes a command-line editor (see \fBThe command-line editor\fR),
93 programmable word completion (see \fBCompletion and listing\fR),
94 spelling correction (see \fBSpelling correction\fR),
95 a history mechanism (see \fBHistory substitution\fR),
96 job control (see \fBJobs\fR)
97 and a C-like syntax.
98 The \fBNEW FEATURES\fR section describes major enhancements of \fItcsh\fR
99 over \fIcsh\fR(1).
100 Throughout this manual, features of
101 \fItcsh\fR not found in most \fIcsh\fR(1) implementations
102 (specifically, the 4.4BSD \fIcsh\fR)
103 are labeled with `(+)', and features which are present in \fIcsh\fR(1)
104 but not usually documented are labeled with `(u)'.
105 .SS "Argument list processing"
106 If the first argument (argument 0) to the shell is `\-' then it is a
107 login shell.  A login shell can be also specified by invoking the shell with
108 the \fB\-l\fR flag as the only argument.
109 .PP
110 The rest of the flag arguments are interpreted as follows:
111 .TP 4
112 .B \-b
113 Forces a ``break'' from option processing, causing any
114 further shell arguments to be treated as non-option arguments.  The remaining
115 arguments will not be interpreted as shell options.  This may be used to pass
116 options to a shell script without confusion or possible subterfuge.  The shell
117 will not run a set-user ID script without this option.
118 .TP 4
119 .B \-c
120 Commands are read from the following argument (which must be present, and
121 must be a single argument),
122 stored in the \fBcommand\fR shell variable for reference, and executed.
123 Any remaining arguments are placed in the \fBargv\fR shell variable.
124 .TP 4
125 .B \-d
126 The shell loads the directory stack from \fI~/.cshdirs\fR as described under
127 \fBStartup and shutdown\fR, whether or not it is a login shell. (+)
128 .TP 4
129 .B \-D\fIname\fR[=\fIvalue\fR]
130 Sets the environment variable \fIname\fR to \fIvalue\fR. (Domain/OS only) (+)
131 .TP 4
132 .B \-e
133 The shell exits if any invoked command terminates abnormally or
134 yields a non-zero exit status.
135 .TP 4
136 .B \-f
137 The shell does not load any resource or startup files, or perform any 
138 command hashing, and thus starts faster.
139 .TP 4
140 .B \-F
141 The shell uses \fIfork\fR(2) instead of \fIvfork\fR(2) to spawn processes. (+)
142 .TP 4
143 .B \-i
144 The shell is interactive and prompts for its top-level input, even if
145 it appears to not be a terminal.  Shells are interactive without this option if
146 their inputs and outputs are terminals.
147 .TP 4
148 .B \-l
149 The shell is a login shell.  Applicable only if \fB\-l\fR is the only
150 flag specified.
151 .TP 4
152 .B \-m
153 The shell loads \fI~/.tcshrc\fR even if it does not belong to the effective
154 user.  Newer versions of \fIsu\fR(1) can pass \fB\-m\fR to the shell. (+)
155 .TP 4
156 .B \-n
157 The shell parses commands but does not execute them.
158 This aids in debugging shell scripts.
159 .TP 4
160 .B \-q
161 The shell accepts SIGQUIT (see \fBSignal handling\fR) and behaves when
162 it is used under a debugger.  Job control is disabled. (u)
163 .TP 4
164 .B \-s
165 Command input is taken from the standard input.
166 .TP 4
167 .B \-t
168 The shell reads and executes a single line of input.  A `\e' may be used to
169 escape the newline at the end of this line and continue onto another line.
170 .TP 4
171 .B \-v
172 Sets the \fBverbose\fR shell variable, so that
173 command input is echoed after history substitution.
174 .TP 4
175 .B \-x
176 Sets the \fBecho\fR shell variable, so that commands are echoed
177 immediately before execution.
178 .TP 4
179 .B \-V
180 Sets the \fBverbose\fR shell variable even before executing \fI~/.tcshrc\fR.
181 .TP 4
182 .B \-X
183 Is to \fB\-x\fR as \fB\-V\fR is to \fB\-v\fR.
184 .TP 4
185 .B \-\-help
186 Print a help message on the standard output and exit. (+)
187 .TP 4
188 .B \-\-version
189 Print the version/platform/compilation options on the standard output and exit.
190 This information is also contained in the \fBversion\fR shell variable. (+)
191 .PP
192 After processing of flag arguments, if arguments remain but none of the
193 \fB\-c\fR, \fB\-i\fR, \fB\-s\fR, or \fB\-t\fR options were given, the first
194 argument is taken as the name of a file of commands, or ``script'', to
195 be executed.  The shell opens this file and saves its name for possible
196 resubstitution by `$0'.  Because many systems use either the standard
197 version 6 or version 7 shells whose shell scripts are not compatible
198 with this shell, the shell uses such a `standard' shell to execute a script
199 whose first character is not a `#', i.e., that does not start with a
200 comment.
201 .PP
202 Remaining arguments are placed in the \fBargv\fR shell variable.
203 .SS "Startup and shutdown"
204 A login shell begins by executing commands from the system files
205 \fI/etc/csh.cshrc\fR and \fI/etc/csh.login\fR.
206 It then executes commands from files in the user's \fBhome\fR directory:
207 first \fI~/.tcshrc\fR (+)
208 or, if \fI~/.tcshrc\fR is not found, \fI~/.cshrc\fR,
209 then the contents of \fI~/.history\fR (or the value of the \fBhistfile\fR shell variable) are loaded into memory,
210 then \fI~/.login\fR,
211 and finally \fI~/.cshdirs\fR (or the value of the \fBdirsfile\fR shell variable) (+).
212 The shell may read \fI/etc/csh.login\fR before instead of after
213 \fI/etc/csh.cshrc\fR, and \fI~/.login\fR before instead of after
214 \fI~/.tcshrc\fR or \fI~/.cshrc\fR and \fI~/.history\fR, if so compiled;
215 see the \fBversion\fR shell variable. (+)
216 .PP
217 Non-login shells read only \fI/etc/csh.cshrc\fR and \fI~/.tcshrc\fR
218 or \fI~/.cshrc\fR on startup.
219 .PP
220 For examples of startup files, please consult
221 \fIhttp://tcshrc.sourceforge.net\fR.
222 .PP
223 Commands like \fIstty\fR(1) and \fItset\fR(1),
224 which need be run only once per login, usually go in one's \fI~/.login\fR file.
225 Users who need to use the same set of files with both \fIcsh\fR(1) and
226 \fItcsh\fR can have only a \fI~/.cshrc\fR which checks for the existence of the
227 \fBtcsh\fR shell variable (q.v.) before using \fItcsh\fR-specific commands,
228 or can have both a \fI~/.cshrc\fR and a \fI~/.tcshrc\fR which \fIsource\fRs
229 (see the builtin command) \fI~/.cshrc\fR.
230 The rest of this manual uses `\fI~/.tcshrc\fR' to mean `\fI~/.tcshrc\fR or,
231 if \fI~/.tcshrc\fR is not found, \fI~/.cshrc\fR'.
232 .PP
233 In the normal case, the shell begins reading commands from the terminal,
234 prompting with `> '.  (Processing of arguments and the use of the shell to
235 process files containing command scripts are described later.)
236 The shell repeatedly reads a line of command input, breaks it into words,
237 places it on the command history list, parses it and executes each command
238 in the line.
239 .PP
240 One can log out by typing `^D' on an empty line, `logout' or `login' or
241 via the shell's autologout mechanism (see the \fBautologout\fR shell variable).
242 When a login shell terminates it sets the \fBlogout\fR shell variable to
243 `normal' or `automatic' as appropriate, then
244 executes commands from the files
245 \fI/etc/csh.logout\fR and \fI~/.logout\fR.  The shell may drop DTR on logout
246 if so compiled; see the \fBversion\fR shell variable.
247 .PP
248 The names of the system login and logout files vary from system to system for
249 compatibility with different \fIcsh\fR(1) variants; see \fBFILES\fR.
250 .SS Editing
251 We first describe \fBThe command-line editor\fR.
252 The \fBCompletion and listing\fR and \fBSpelling correction\fR sections
253 describe two sets of functionality that are implemented as editor commands
254 but which deserve their own treatment.
255 Finally, \fBEditor commands\fR lists and describes
256 the editor commands specific to the shell and their default bindings.
257 .SS "The command-line editor (+)"
258 Command-line input can be edited using key sequences much like those used in
259 \fIemacs\fR(1) or \fIvi\fR(1).
260 The editor is active only when the \fBedit\fR shell variable is set, which
261 it is by default in interactive shells.
262 The \fIbindkey\fR builtin can display and change key bindings.
263 \fIemacs\fR(1)\-style key bindings are used by default
264 (unless the shell was compiled otherwise; see the \fBversion\fR shell variable),
265 but \fIbindkey\fR can change the key bindings to \fIvi\fR(1)\-style bindings en masse.
266 .PP
267 The shell always binds the arrow keys (as defined in the \fBTERMCAP\fR
268 environment variable) to
269 .PP
270 .PD 0
271 .RS +4
272 .TP 8
273 down
274 \fIdown-history\fR
275 .TP 8
276 up
277 \fIup-history\fR
278 .TP 8
279 left
280 \fIbackward-char\fR
281 .TP 8
282 right
283 \fIforward-char\fR
284 .PD
285 .RE
286 .PP
287 unless doing so would alter another single-character binding.
288 One can set the arrow key escape sequences to the empty string with \fIsettc\fR
289 to prevent these bindings.
290 The ANSI/VT100 sequences for arrow keys are always bound.
291 .PP
292 Other key bindings are, for the most part, what \fIemacs\fR(1) and \fIvi\fR(1)
293 users would expect and can easily be displayed by \fIbindkey\fR, so there
294 is no need to list them here.  Likewise, \fIbindkey\fR can list the editor
295 commands with a short description of each.
296 Certain key bindings have different behavior depending if \fIemacs\fR(1) or \fIvi\fR(1)
297 style bindings are being used; see \fBvimode\fR for more information.
298 .PP
299 Note that editor commands do not have the same notion of a ``word'' as does the
300 shell.  The editor delimits words with any non-alphanumeric characters not in
301 the shell variable \fBwordchars\fR, while the shell recognizes only whitespace
302 and some of the characters with special meanings to it, listed under
303 \fBLexical structure\fR.
304 .SS "Completion and listing (+)"
305 The shell is often able to complete words when given a unique abbreviation.
306 Type part of a word (for example `ls /usr/lost') and hit the tab key to
307 run the \fIcomplete-word\fR editor command.
308 The shell completes the filename `/usr/lost' to `/usr/lost+found/',
309 replacing the incomplete word with the complete word in the input buffer.
310 (Note the terminal `/'; completion adds a `/' to the
311 end of completed directories and a space to the end of other completed words,
312 to speed typing and provide a visual indicator of successful completion.
313 The \fBaddsuffix\fR shell variable can be unset to prevent this.)
314 If no match is found (perhaps `/usr/lost+found' doesn't exist),
315 the terminal bell rings.
316 If the word is already complete (perhaps there is a `/usr/lost' on your
317 system, or perhaps you were thinking too far ahead and typed the whole thing)
318 a `/' or space is added to the end if it isn't already there.
319 .PP
320 Completion works anywhere in the line, not at just the end; completed
321 text pushes the rest of the line to the right.  Completion in the middle of a word
322 often results in leftover characters to the right of the cursor that need
323 to be deleted.
324 .PP
325 Commands and variables can be completed in much the same way.
326 For example, typing `em[tab]' would complete `em' to
327 `emacs' if \fIemacs\fR were the only command on your system beginning with `em'.
328 Completion can find a command in any directory in \fBpath\fR or if
329 given a full pathname.
330 Typing `echo $ar[tab]' would complete `$ar' to `$argv'
331 if no other variable began with `ar'.
332 .PP
333 The shell parses the input buffer to determine whether the word you want to
334 complete should be completed as a filename, command or variable.
335 The first word in the buffer and the first word following
336 `;', `|', `|&', `&&' or `||' is considered to be a command.
337 A word beginning with `$' is considered to be a variable.
338 Anything else is a filename.  An empty line is `completed' as a filename.
339 .PP
340 You can list the possible completions of a word at any time by typing `^D'
341 to run the \fIdelete-char-or-list-or-eof\fR editor command.
342 The shell lists the possible completions using the \fIls\-F\fR builtin (q.v.)
343 and reprints the prompt and unfinished command line, for example:
344 .IP "" 4
345 > ls /usr/l[^D]
346 .br
347 lbin/       lib/        local/      lost+found/
348 .br
349 > ls /usr/l
350 .PP
351 If the \fBautolist\fR shell variable is set, the shell lists the remaining
352 choices (if any) whenever completion fails:
353 .IP "" 4
354 > set autolist
355 .br
356 > nm /usr/lib/libt[tab]
357 .br
358 libtermcap.a@ libtermlib.a@
359 .br
360 > nm /usr/lib/libterm
361 .PP
362 If \fBautolist\fR is set to `ambiguous', choices are listed only when
363 completion fails and adds no new characters to the word being completed.
364 .PP
365 A filename to be completed can contain variables, your own or others' home
366 directories abbreviated with `~' (see \fBFilename substitution\fR) and
367 directory stack entries abbreviated with `='
368 (see \fBDirectory stack substitution\fR).  For example,
369 .IP "" 4
370 > ls ~k[^D]
371 .br
372 kahn    kas     kellogg
373 .br
374 > ls ~ke[tab]
375 .br
376 > ls ~kellogg/
377 .PP
378 or
379 .IP "" 4
380 > set local = /usr/local
381 .br
382 > ls $lo[tab]
383 .br
384 > ls $local/[^D]
385 .br
386 bin/ etc/ lib/ man/ src/
387 .br
388 > ls $local/
389 .PP
390 Note that variables can also be expanded explicitly with the
391 \fIexpand-variables\fR editor command.
392 .PP
393 \fIdelete-char-or-list-or-eof\fR lists at only the end of the line;
394 in the middle of a line it deletes the character under the cursor and
395 on an empty line it logs one out or, if \fBignoreeof\fR is set, does nothing.
396 `M-^D', bound to the editor command \fIlist-choices\fR, lists completion
397 possibilities anywhere on a line, and \fIlist-choices\fR (or any one of the
398 related editor commands that do or don't delete, list and/or log out,
399 listed under \fIdelete-char-or-list-or-eof\fR) can be bound to `^D' with
400 the \fIbindkey\fR builtin command if so desired.
401 .PP
402 The \fIcomplete-word-fwd\fR and \fIcomplete-word-back\fR editor commands
403 (not bound to any keys by default) can be used to cycle up and down through
404 the list of possible completions, replacing the current word with the next or
405 previous word in the list.
406 .PP
407 The shell variable \fBfignore\fR can be set to a list of suffixes to be
408 ignored by completion.  Consider the following:
409 .IP "" 4
410 > ls
411 .br
412 Makefile        condiments.h~   main.o          side.c
413 .br
414 README          main.c          meal            side.o
415 .br
416 condiments.h    main.c~
417 .br
418 > set fignore = (.o \e~)
419 .br
420 > emacs ma[^D]
421 .br
422 main.c   main.c~  main.o
423 .br
424 > emacs ma[tab]
425 .br
426 > emacs main.c
427 .PP
428 `main.c~' and `main.o' are ignored by completion (but not listing),
429 because they end in suffixes in \fBfignore\fR.
430 Note that a `\e' was needed in front of `~' to prevent it from being
431 expanded to \fBhome\fR as described under \fBFilename substitution\fR.
432 \fBfignore\fR is ignored if only one completion is possible.
433 .PP
434 If the \fBcomplete\fR shell variable is set to `enhance', completion
435 1) ignores case and 2) considers periods, hyphens and underscores
436 (`.', `\-' and `_') to be word separators and hyphens and underscores to
437 be equivalent.  If you had the following files
438 .IP "" 4
439 comp.lang.c      comp.lang.perl   comp.std.c++
440 .br
441 comp.lang.c++    comp.std.c
442 .PP
443 and typed `mail \-f c.l.c[tab]', it would be completed to
444 `mail \-f comp.lang.c', and ^D would list `comp.lang.c' and `comp.lang.c++'.
445 `mail \-f c..c++[^D]' would list `comp.lang.c++' and `comp.std.c++'.  Typing
446 `rm a\-\-file[^D]' in the following directory
447 .IP "" 4
448 A_silly_file    a-hyphenated-file    another_silly_file
449 .PP
450 would list all three files, because case is ignored and hyphens and
451 underscores are equivalent.  Periods, however, are not equivalent to
452 hyphens or underscores.
453 .PP
454 If the \fBcomplete\fR shell variable is set to `Enhance', completion
455 ignores case and differences between a hyphen and an underscore word
456 separator only when the user types a lowercase character or a hyphen.
457 Entering an uppercase character or an underscore will not match the 
458 corresponding lowercase character or hyphen word separator.  
459 Typing `rm a\-\-file[^D]' in the directory of the previous example would 
460 still list all three files, but typing `rm A\-\-file' would match only 
461 `A_silly_file' and typing `rm a__file[^D]' would match just `A_silly_file' 
462 and `another_silly_file' because the user explicitly used an uppercase 
463 or an underscore character.  
464 .PP
465 Completion and listing are affected by several other shell variables:
466 \fBrecexact\fR can be set to complete on the shortest possible unique
467 match, even if more typing might result in a longer match:
468 .IP "" 4
469 > ls
470 .br
471 fodder   foo      food     foonly
472 .br
473 > set recexact
474 .br
475 > rm fo[tab]
476 .PP
477 just beeps, because `fo' could expand to `fod' or `foo', but if we type
478 another `o',
479 .IP "" 4
480 > rm foo[tab]
481 .br
482 > rm foo
483 .PP
484 the completion completes on `foo', even though `food' and `foonly'
485 also match.
486 \fBautoexpand\fR can be set to run the \fIexpand-history\fR editor command
487 before each completion attempt, \fBautocorrect\fR can be set to
488 spelling-correct the word to be completed (see \fBSpelling correction\fR)
489 before each completion attempt and \fBcorrect\fR can be set to complete
490 commands automatically after one hits `return'.
491 \fBmatchbeep\fR can be set to make completion beep or not beep in a variety
492 of situations, and \fBnobeep\fR can be set to never beep at all.
493 \fBnostat\fR can be set to a list of directories and/or patterns that
494 match directories to prevent the completion mechanism from \fIstat\fR(2)ing
495 those directories.
496 \fBlistmax\fR and \fBlistmaxrows\fR can be set to limit the number of items
497 and rows (respectively) that are listed without asking first.
498 \fBrecognize_only_executables\fR can be set to make the shell list only
499 executables when listing commands, but it is quite slow.
500 .PP
501 Finally, the \fIcomplete\fR builtin command can be used to tell the shell how
502 to complete words other than filenames, commands and variables.
503 Completion and listing do not work on glob-patterns (see \fBFilename substitution\fR),
504 but the \fIlist-glob\fR and \fIexpand-glob\fR editor commands perform
505 equivalent functions for glob-patterns.
506 .SS "Spelling correction (+)"
507 The shell can sometimes correct the spelling of filenames, commands and variable names
508 as well as completing and listing them.
509 .PP
510 Individual words can be spelling-corrected with the \fIspell-word\fR
511 editor command (usually bound to M-s and M-S)
512 and the entire input buffer with \fIspell-line\fR (usually bound to M-$).
513 The \fBcorrect\fR shell variable can be set to `cmd' to correct the
514 command name or `all' to correct the entire line each time return is typed,
515 and \fBautocorrect\fR can be set to correct the word to be completed
516 before each completion attempt.
517 .PP
518 When spelling correction is invoked in any of these ways and
519 the shell thinks that any part of the command line is misspelled,
520 it prompts with the corrected line:
521 .IP "" 4
522 > set correct = cmd
523 .br
524 > lz /usr/bin
525 .br
526 CORRECT>ls /usr/bin (y|n|e|a)?
527 .PP
528 One can answer `y' or space to execute the corrected line,
529 `e' to leave the uncorrected command in the input buffer,
530 `a' to abort the command as if `^C' had been hit, and
531 anything else to execute the original line unchanged.
532 .PP
533 Spelling correction recognizes user-defined completions (see the
534 \fIcomplete\fR builtin command).  If an input word in a position for
535 which a completion is defined resembles a word in the completion list,
536 spelling correction registers a misspelling and suggests the latter
537 word as a correction.  However, if the input word does not match any of
538 the possible completions for that position, spelling correction does
539 not register a misspelling.
540 .PP
541 Like completion, spelling correction works anywhere in the line,
542 pushing the rest of the line to the right and possibly leaving
543 extra characters to the right of the cursor.
544 .SS "Editor commands (+)"
545 `bindkey' lists key bindings and `bindkey \-l' lists and briefly describes
546 editor commands.
547 Only new or especially interesting editor commands are described here.
548 See \fIemacs\fR(1) and \fIvi\fR(1) for descriptions of each editor's
549 key bindings.
550 .PP
551 The character or characters to which each command is bound by default is
552 given in parentheses.  `^\fIcharacter\fR' means a control character and
553 `M-\fIcharacter\fR' a meta character, typed as escape-\fIcharacter\fR
554 on terminals without a meta key.  Case counts, but commands that are bound
555 to letters by default are bound to both lower- and uppercase letters for
556 convenience.
557 .TP 8
558 .B backward-char \fR(^B, left)
559 Move back a character.
560 Cursor behavior modified by \fBvimode\fR.
561 .TP 8
562 .B backward-delete-word \fR(M-^H, M-^?)
563 Cut from beginning of current word to cursor \- saved in cut buffer.
564 Word boundary behavior modified by \fBvimode\fR.
565 .TP 8
566 .B backward-word \fR(M-b, M-B)
567 Move to beginning of current word.
568 Word boundary and cursor behavior modified by \fBvimode\fR.
569 .TP 8
570 .B beginning-of-line \fR(^A, home)
571 Move to beginning of line.
572 Cursor behavior modified by \fBvimode\fR.
573 .TP 8
574 .B capitalize-word \fR(M-c, M-C)
575 Capitalize the characters from cursor to end of current word.
576 Word boundary behavior modified by \fBvimode\fR.
577 .TP 8
578 .B complete-word \fR(tab)
579 Completes a word as described under \fBCompletion and listing\fR.
580 .TP 8
581 .B complete-word-back \fR(not bound)
582 Like \fIcomplete-word-fwd\fR, but steps up from the end of the list.
583 .TP 8
584 .B complete-word-fwd \fR(not bound)
585 Replaces the current word with the first word in the list of possible
586 completions.  May be repeated to step down through the list.
587 At the end of the list, beeps and reverts to the incomplete word.
588 .TP 8
589 .B complete-word-raw \fR(^X-tab)
590 Like \fIcomplete-word\fR, but ignores user-defined completions.
591 .TP 8
592 .B copy-prev-word \fR(M-^_)
593 Copies the previous word in the current line into the input buffer.
594 See also \fIinsert-last-word\fR.
595 Word boundary behavior modified by \fBvimode\fR.
596 .TP 8
597 .B dabbrev-expand \fR(M-/)
598 Expands the current word to the most recent preceding one for which
599 the current is a leading substring, wrapping around the history list
600 (once) if necessary.
601 Repeating \fIdabbrev-expand\fR without any intervening typing
602 changes to the next previous word etc., skipping identical matches
603 much like \fIhistory-search-backward\fR does.
604 .TP 8
605 .B delete-char \fR(not bound)
606 Deletes the character under the cursor.
607 See also \fIdelete-char-or-list-or-eof\fR.
608 Cursor behavior modified by \fBvimode\fR.
609 .TP 8
610 .B delete-char-or-eof \fR(not bound)
611 Does \fIdelete-char\fR if there is a character under the cursor
612 or \fIend-of-file\fR on an empty line.
613 See also \fIdelete-char-or-list-or-eof\fR.
614 Cursor behavior modified by \fBvimode\fR.
615 .TP 8
616 .B delete-char-or-list \fR(not bound)
617 Does \fIdelete-char\fR if there is a character under the cursor
618 or \fIlist-choices\fR at the end of the line.
619 See also \fIdelete-char-or-list-or-eof\fR.
620 .TP 8
621 .B delete-char-or-list-or-eof \fR(^D)
622 Does \fIdelete-char\fR if there is a character under the cursor,
623 \fIlist-choices\fR at the end of the line
624 or \fIend-of-file\fR on an empty line.
625 See also those three commands, each of which does only a single action, and
626 \fIdelete-char-or-eof\fR, \fIdelete-char-or-list\fR and \fIlist-or-eof\fR,
627 each of which does a different two out of the three.
628 .TP 8
629 .B delete-word \fR(M-d, M-D)
630 Cut from cursor to end of current word \- save in cut buffer.
631 Word boundary behavior modified by \fBvimode\fR.
632 .TP 8
633 .B down-history \fR(down-arrow, ^N)
634 Like \fIup-history\fR, but steps down, stopping at the original input line.
635 .TP 8
636 .B downcase-word \fR(M-l, M-L)
637 Lowercase the characters from cursor to end of current word.
638 Word boundary behavior modified by \fBvimode\fR.
639 .TP 8
640 .B end-of-file \fR(not bound)
641 Signals an end of file, causing the shell to exit unless the \fBignoreeof\fR
642 shell variable (q.v.) is set to prevent this.
643 See also \fIdelete-char-or-list-or-eof\fR.
644 .TP 8
645 .B end-of-line \fR(^E, end)
646 Move cursor to end of line.
647 Cursor behavior modified by \fBvimode\fR.
648 .TP 8
649 .B expand-history \fR(M-space)
650 Expands history substitutions in the current word.
651 See \fBHistory substitution\fR.
652 See also \fImagic-space\fR, \fItoggle-literal-history\fR and
653 the \fBautoexpand\fR shell variable.
654 .TP 8
655 .B expand-glob \fR(^X-*)
656 Expands the glob-pattern to the left of the cursor.
657 See \fBFilename substitution\fR.
658 .TP 8
659 .B expand-line \fR(not bound)
660 Like \fIexpand-history\fR, but
661 expands history substitutions in each word in the input buffer.
662 .TP 8
663 .B expand-variables \fR(^X-$)
664 Expands the variable to the left of the cursor.
665 See \fBVariable substitution\fR.
666 .TP 8
667 .B forward-char \fR(^F, right)
668 Move forward one character.
669 Cursor behavior modified by \fBvimode\fR.
670 .TP 8
671 .B forward-word \fR(M-f, M-F)
672 Move forward to end of current word.
673 Word boundary and cursor behavior modified by \fBvimode\fR.
674 .TP 8
675 .B history-search-backward \fR(M-p, M-P)
676 Searches backwards through the history list for a command beginning with
677 the current contents of the input buffer up to the cursor and copies it
678 into the input buffer.
679 The search string may be a glob-pattern (see \fBFilename substitution\fR)
680 containing `*', `?', `[]' or `{}'.
681 \fIup-history\fR and \fIdown-history\fR will proceed from the
682 appropriate point in the history list.
683 Emacs mode only.
684 See also \fIhistory-search-forward\fR and \fIi-search-back\fR.
685 .TP 8
686 .B history-search-forward \fR(M-n, M-N)
687 Like \fIhistory-search-backward\fR, but searches forward.
688 .TP 8
689 .B i-search-back \fR(not bound)
690 Searches backward like \fIhistory-search-backward\fR, copies the first match
691 into the input buffer with the cursor positioned at the end of the pattern,
692 and prompts with `bck: ' and the first match.  Additional characters may be
693 typed to extend the search, \fIi-search-back\fR may be typed to continue
694 searching with the same pattern, wrapping around the history list if
695 necessary, (\fIi-search-back\fR must be bound to a
696 single character for this to work) or one of the following special characters
697 may be typed:
698 .PP
699 .RS +8
700 .RS +4
701 .PD 0
702 .TP 8
703 ^W
704 Appends the rest of the word under the cursor to the search pattern.
705 .TP 8
706 delete (or any character bound to \fIbackward-delete-char\fR)
707 Undoes the effect of the last character typed and deletes a character
708 from the search pattern if appropriate.
709 .TP 8
710 ^G
711 If the previous search was successful, aborts the entire search.
712 If not, goes back to the last successful search.
713 .TP 8
714 escape
715 Ends the search, leaving the current line in the input buffer.
716 .RE
717 .PD
718 .PP
719 Any other character not bound to \fIself-insert-command\fR terminates the
720 search, leaving the current line in the input buffer, and
721 is then interpreted as normal input.  In particular, a carriage return
722 causes the current line to be executed.
723 See also \fIi-search-fwd\fR and \fIhistory-search-backward\fR.
724 Word boundary behavior modified by \fBvimode\fR.
725 .RE
726 .TP 8
727 .B i-search-fwd \fR(not bound)
728 Like \fIi-search-back\fR, but searches forward.
729 Word boundary behavior modified by \fBvimode\fR.
730 .TP 8
731 .B insert-last-word \fR(M-_)
732 Inserts the last word of the previous input line (`!$') into the input buffer.
733 See also \fIcopy-prev-word\fR.
734 .TP 8
735 .B list-choices \fR(M-^D)
736 Lists completion possibilities as described under \fBCompletion and listing\fR.
737 See also \fIdelete-char-or-list-or-eof\fR and \fIlist-choices-raw\fR.
738 .TP 8
739 .B list-choices-raw \fR(^X-^D)
740 Like \fIlist-choices\fR, but ignores user-defined completions.
741 .TP 8
742 .B list-glob \fR(^X-g, ^X-G)
743 Lists (via the \fIls\-F\fR builtin) matches to the glob-pattern
744 (see \fBFilename substitution\fR) to the left of the cursor.
745 .TP 8
746 .B list-or-eof \fR(not bound)
747 Does \fIlist-choices\fR
748 or \fIend-of-file\fR on an empty line.
749 See also \fIdelete-char-or-list-or-eof\fR.
750 .TP 8
751 .B magic-space \fR(not bound)
752 Expands history substitutions in the current line,
753 like \fIexpand-history\fR, and inserts a space.
754 \fImagic-space\fR is designed to be bound to the space bar,
755 but is not bound by default.
756 .TP 8
757 .B normalize-command \fR(^X-?)
758 Searches for the current word in PATH and, if it is found, replaces it with
759 the full path to the executable.  Special characters are quoted.  Aliases are
760 expanded and quoted but commands within aliases are not.  This command is
761 useful with commands that take commands as arguments, e.g., `dbx' and `sh \-x'.
762 .TP 8
763 .B normalize-path \fR(^X-n, ^X-N)
764 Expands the current word as described under the `expand' setting
765 of the \fBsymlinks\fR shell variable.
766 .TP 8
767 .B overwrite-mode \fR(unbound)
768 Toggles between input and overwrite modes.
769 .TP 8
770 .B run-fg-editor \fR(M-^Z)
771 Saves the current input line and
772 looks for a stopped job where the file name portion of its first word
773 is found in the \fBeditors\fR shell variable.
774 If \fBeditors\fR is not set, then the file name portion of the
775 \fBEDITOR\fR environment variable (`ed' if unset)
776 and the
777 \fBVISUAL\fR environment variable (`vi' if unset)
778 will be used.
779 If such a job is found, it is restarted as if `fg %\fIjob\fR' had been
780 typed.  This is used to toggle back and forth between an editor and
781 the shell easily.  Some people bind this command to `^Z' so they
782 can do this even more easily.
783 .TP
784 .B run-help \fR(M-h, M-H)
785 Searches for documentation on the current command, using the same notion of
786 `current command' as the completion routines, and prints it.  There is no way
787 to use a pager; \fIrun-help\fR is designed for short help files.
788 If the special alias \fBhelpcommand\fR is defined, it is run with the
789 command name as a sole argument.  Else,
790 documentation should be in a file named \fIcommand\fR.help, \fIcommand\fR.1,
791 \fIcommand\fR.6, \fIcommand\fR.8 or \fIcommand\fR, which should be in one
792 of the directories listed in the \fBHPATH\fR environment variable.
793 If there is more than one help file only the first is printed.
794 .TP 8
795 .B self-insert-command \fR(text characters)
796 In insert mode (the default), inserts the typed character into the input line after the character under the cursor.
797 In overwrite mode, replaces the character under the cursor with the typed character.
798 The input mode is normally preserved between lines, but the
799 \fBinputmode\fR shell variable can be set to `insert' or `overwrite' to put the
800 editor in that mode at the beginning of each line.
801 See also \fIoverwrite-mode\fR.
802 .TP 8
803 .B sequence-lead-in \fR(arrow prefix, meta prefix, ^X)
804 Indicates that the following characters are part of a
805 multi-key sequence.  Binding a command to a multi-key sequence really creates
806 two bindings: the first character to \fIsequence-lead-in\fR and the
807 whole sequence to the command.  All sequences beginning with a character
808 bound to \fIsequence-lead-in\fR are effectively bound to \fIundefined-key\fR
809 unless bound to another command.
810 .TP 8
811 .B spell-line \fR(M-$)
812 Attempts to correct the spelling of each word in the input buffer, like
813 \fIspell-word\fR, but ignores words whose first character is one of
814 `\-', `!', `^' or `%', or which contain `\e', `*' or `?', to avoid problems
815 with switches, substitutions and the like.
816 See \fBSpelling correction\fR.
817 .TP 8
818 .B spell-word \fR(M-s, M-S)
819 Attempts to correct the spelling of the current word as described
820 under \fBSpelling correction\fR.
821 Checks each component of a word which appears to be a pathname.
822 .TP 8
823 .B toggle-literal-history \fR(M-r, M-R)
824 Expands or `unexpands' history substitutions in the input buffer.
825 See also \fIexpand-history\fR and the \fBautoexpand\fR shell variable.
826 .TP 8
827 .B undefined-key \fR(any unbound key)
828 Beeps.
829 .TP 8
830 .B up-history \fR(up-arrow, ^P)
831 Copies the previous entry in the history list into the input buffer.
832 If \fBhistlit\fR is set, uses the literal form of the entry.
833 May be repeated to step up through the history list, stopping at the top.
834 .TP 8
835 .B upcase-word \fR(M-u, M-U)
836 Uppercase the characters from cursor to end of current word.
837 Word boundary behavior modified by \fBvimode\fR.
838 .TP 8
839 .B vi-beginning-of-next-word \fR(not bound)
840 Vi goto the beginning of next word.
841 Word boundary and cursor behavior modified by \fBvimode\fR.
842 .TP 8
843 .B vi-eword \fR(not bound)
844 Vi move to the end of the current word.
845 Word boundary behavior modified by \fBvimode\fR.
846 .TP 8
847 .B vi-search-back \fR(?)
848 Prompts with `?' for a search string (which may be a glob-pattern, as with
849 \fIhistory-search-backward\fR), searches for it and copies it into the
850 input buffer.  The bell rings if no match is found.
851 Hitting return ends the search and leaves the last match in the input
852 buffer.
853 Hitting escape ends the search and executes the match.
854 \fIvi\fR mode only.
855 .TP 8
856 .B vi-search-fwd \fR(/)
857 Like \fIvi-search-back\fR, but searches forward.
858 .TP 8
859 .B which-command \fR(M-?)
860 Does a \fIwhich\fR (see the description of the builtin command) on the
861 first word of the input buffer.
862 .TP 8
863 .B yank-pop \fR(M-y)
864 When executed immediately after a \fIyank\fR or another \fIyank-pop\fR,
865 replaces the yanked string with the next previous string from the
866 killring. This also has the effect of rotating the killring, such that
867 this string will be considered the most recently killed by a later
868 \fIyank\fR command. Repeating \fIyank-pop\fR will cycle through the
869 killring any number of times.
870 .SS "Lexical structure"
871 The shell splits input lines into words at blanks and tabs.  The special
872 characters `&', `|', `;', `<', `>', `(', and `)' and the doubled characters
873 `&&', `||', `<<' and `>>' are always separate words, whether or not they are
874 surrounded by whitespace.
875 .PP
876 When the shell's input is not a terminal, the character `#' is taken to begin a
877 comment.  Each `#' and the rest of the input line on which it appears is
878 discarded before further parsing.
879 .PP
880 A special character (including a blank or tab) may be prevented from having
881 its special meaning, and possibly made part of another word, by preceding it
882 with a backslash (`\e') or enclosing it in single (`''), double (`"') or
883 backward (`\`') quotes.  When not otherwise quoted a newline preceded by a `\e'
884 is equivalent to a blank, but inside quotes this sequence results in a
885 newline.
886 .PP
887 Furthermore, all \fBSubstitutions\fR (see below) except \fBHistory substitution\fR
888 can be prevented by enclosing the strings (or parts of strings)
889 in which they appear with single quotes or by quoting the crucial character(s)
890 (e.g., `$' or `\`' for \fBVariable substitution\fR or \fBCommand substitution\fR respectively)
891 with `\e'.  (\fBAlias substitution\fR is no exception: quoting in any way any
892 character of a word for which an \fIalias\fR has been defined prevents
893 substitution of the alias.  The usual way of quoting an alias is to precede it
894 with a backslash.) \fBHistory substitution\fR is prevented by
895 backslashes but not by single quotes.  Strings quoted with double or backward
896 quotes undergo \fBVariable substitution\fR and \fBCommand substitution\fR, but other
897 substitutions are prevented.
898 .PP
899 Text inside single or double quotes becomes a single word (or part of one).
900 Metacharacters in these strings, including blanks and tabs, do not form
901 separate words.  Only in one special case (see \fBCommand substitution\fR
902 below) can a double-quoted string yield parts of more than one word;
903 single-quoted strings never do.  Backward quotes are special: they signal
904 \fBCommand substitution\fR (q.v.), which may result in more than one word.
905 .PP
906 Quoting complex strings, particularly strings which themselves contain quoting
907 characters, can be confusing.  Remember that quotes need not be used as they are
908 in human writing!  It may be easier to quote not an entire string, but only
909 those parts of the string which need quoting, using different types of quoting
910 to do so if appropriate.
911 .PP
912 The \fBbackslash_quote\fR shell variable (q.v.) can be set to make backslashes
913 always quote `\e', `'', and `"'.  (+) This may make complex quoting tasks
914 easier, but it can cause syntax errors in \fIcsh\fR(1) scripts.
915 .SS Substitutions
916 We now describe the various transformations the shell performs on the input in
917 the order in which they occur.  We note in passing the data structures involved
918 and the commands and variables which affect them.  Remember that substitutions
919 can be prevented by quoting as described under \fBLexical structure\fR.
920 .SS "History substitution"
921 Each command, or ``event'', input from the terminal is saved in the history
922 list.  The previous command is always saved, and the \fBhistory\fR shell
923 variable can be set to a number to save that many commands.  The \fBhistdup\fR
924 shell variable can be set to not save duplicate events or consecutive duplicate
925 events.
926 .PP
927 Saved commands are numbered sequentially from 1 and stamped with the time.
928 It is not usually necessary to use event numbers, but the current event number
929 can be made part of the prompt by placing an `!' in the \fBprompt\fR shell variable.
930 .PP
931 The shell actually saves history in expanded and literal (unexpanded) forms.
932 If the \fBhistlit\fR shell variable is set, commands that display and store
933 history use the literal form.
934 .PP
935 The \fIhistory\fR builtin command can print, store in a file, restore
936 and clear the history list at any time,
937 and the \fBsavehist\fR and \fBhistfile\fR shell variables can be set to
938 store the history list automatically on logout and restore it on login.
939 .PP
940 History substitutions introduce words from the history list into the input
941 stream, making it easy to repeat commands, repeat arguments of a previous
942 command in the current command, or fix spelling mistakes in the previous
943 command with little typing and a high degree of confidence.
944 .PP
945 History substitutions begin with the character `!'.  They may begin anywhere in
946 the input stream, but they do not nest.  The `!' may be preceded by a `\e' to
947 prevent its special meaning; for convenience, a `!' is passed unchanged when it
948 is followed by a blank, tab, newline, `=' or `('.  History substitutions also
949 occur when an input line begins with `^'.  This special abbreviation will be
950 described later.  The characters used to signal history substitution (`!' and
951 `^') can be changed by setting the \fBhistchars\fR shell variable.  Any input
952 line which contains a history substitution is printed before it is executed.
953 .PP
954 A history substitution may have an ``event specification'', which indicates
955 the event from which words are to be taken, a ``word designator'',
956 which selects particular words from the chosen event, and/or a ``modifier'',
957 which manipulates the selected words.
958 .PP
959 An event specification can be
960 .PP
961 .PD 0
962 .RS +4
963 .TP 8
964 .I n
965 A number, referring to a particular event
966 .TP 8
967 \-\fIn\fR
968 An offset, referring to the event \fIn\fR before the current event
969 .TP 8
970 #
971 The current event.
972 This should be used carefully in \fIcsh\fR(1), where there is no check for
973 recursion.  \fItcsh\fR allows 10 levels of recursion.  (+)
974 .TP 8
975 !
976 The previous event (equivalent to `\-1')
977 .TP 8
978 .I s
979 The most recent event whose first word begins with the string \fIs\fR
980 .TP 8
981 ?\fIs\fR?
982 The most recent event which contains the string \fIs\fR.
983 The second `?' can be omitted if it is immediately followed by a newline.
984 .RE
985 .PD
986 .PP
987 For example, consider this bit of someone's history list:
988 .IP "" 4
989 \ 9  8:30    nroff \-man wumpus.man
990 .br
991 10  8:31    cp wumpus.man wumpus.man.old
992 .br
993 11  8:36    vi wumpus.man
994 .br
995 12  8:37    diff wumpus.man.old wumpus.man
996 .PP
997 The commands are shown with their event numbers and time stamps.
998 The current event, which we haven't typed in yet, is event 13.
999 `!11' and `!\-2' refer to event 11.
1000 `!!' refers to the previous event, 12.  `!!' can be abbreviated `!' if it is
1001 followed by `:' (`:' is described below).
1002 `!n' refers to event 9, which begins with `n'.
1003 `!?old?' also refers to event 12, which contains `old'.
1004 Without word designators or modifiers history references simply expand to the
1005 entire event, so we might type `!cp' to redo the copy command or `!!|more'
1006 if the `diff' output scrolled off the top of the screen.
1007 .PP
1008 History references may be insulated from the surrounding text with braces if
1009 necessary.  For example, `!vdoc' would look for a command beginning with
1010 `vdoc', and, in this example, not find one, but `!{v}doc' would expand
1011 unambiguously to `vi wumpus.mandoc'.
1012 Even in braces, history substitutions do not nest.
1013 .PP
1014 (+) While \fIcsh\fR(1) expands, for example, `!3d' to event 3 with the
1015 letter `d' appended to it, \fItcsh\fR expands it to the last event beginning
1016 with `3d'; only completely numeric arguments are treated as event numbers.
1017 This makes it possible to recall events beginning with numbers.
1018 To expand `!3d' as in \fIcsh\fR(1) say `!{3}d'.
1019 .PP
1020 To select words from an event we can follow the event specification by a `:'
1021 and a designator for the desired words.  The words of an input line are
1022 numbered from 0, the first (usually command) word being 0, the second word
1023 (first argument) being 1, etc.  The basic word designators are:
1024 .PP
1025 .PD 0
1026 .RS +4
1027 .TP 8
1028 0
1029 The first (command) word
1030 .TP 8
1031 .I n
1032 The \fIn\fRth argument
1033 .TP 8
1034 ^
1035 The first argument, equivalent to `1'
1036 .TP 8
1037 $
1038 The last argument
1039 .TP 8
1040 %
1041 The word matched by an ?\fIs\fR? search
1042 .TP 8
1043 .I x\-y
1044 A range of words
1045 .TP 8
1046 .I \-y
1047 Equivalent to \fI`0\-y'\fR
1048 .TP 8
1049 *
1050 Equivalent to `^\-$', but returns nothing if the event contains only 1 word
1051 .TP 8
1052 .I x*
1053 Equivalent to \fI`x\-$'\fR
1054 .TP 8
1055 .I x\-
1056 Equivalent to \fI`x*'\fR, but omitting the last word (`$')
1057 .PD
1058 .RE
1059 .PP
1060 Selected words are inserted into the command line separated by single blanks.
1061 For example, the `diff' command in the previous example might have been
1062 typed as `diff !!:1.old !!:1' (using `:1' to select the first argument
1063 from the previous event) or `diff !\-2:2 !\-2:1' to select and swap the
1064 arguments from the `cp' command.  If we didn't care about the order of the
1065 `diff' we might have said `diff !\-2:1\-2' or simply `diff !\-2:*'.
1066 The `cp' command might have been written `cp wumpus.man !#:1.old', using `#'
1067 to refer to the current event.
1068 `!n:\- hurkle.man' would reuse the first two words from the `nroff' command
1069 to say `nroff \-man hurkle.man'.
1070 .PP
1071 The `:' separating the event specification from the word designator can be
1072 omitted if the argument selector begins with a `^', `$', `*', `%' or `\-'.
1073 For example, our `diff' command might have been `diff !!^.old !!^' or,
1074 equivalently, `diff !!$.old !!$'.  However, if `!!' is abbreviated `!',
1075 an argument selector beginning with `\-' will be interpreted as an event
1076 specification.
1077 .PP
1078 A history reference may have a word designator but no event specification.
1079 It then references the previous command.
1080 Continuing our `diff' example, we could have said simply `diff
1081 !^.old !^' or, to get the arguments in the opposite order, just `diff !*'.
1082 .PP
1083 The word or words in a history reference can be edited, or ``modified'',
1084 by following it with one or more modifiers, each preceded by a `:':
1085 .PP
1086 .PD 0
1087 .RS +4
1088 .TP 8
1089 h
1090 Remove a trailing pathname component, leaving the head.
1091 .TP 8
1092 t
1093 Remove all leading pathname components, leaving the tail.
1094 .TP 8
1095 r
1096 Remove a filename extension `.xxx', leaving the root name.
1097 .TP 8
1098 e
1099 Remove all but the extension.
1100 .TP 8
1101 u
1102 Uppercase the first lowercase letter.
1103 .TP 8
1104 l
1105 Lowercase the first uppercase letter.
1106 .TP 8
1107 s\fI/l/r/\fR
1108 Substitute \fIl\fR for \fIr\fR.
1109 \fIl\fR is simply a string like \fIr\fR, not a regular expression as in
1110 the eponymous \fIed\fR(1) command.
1111 Any character may be used as the delimiter in place of `/';
1112 a `\e' can be used to quote the delimiter inside \fIl\fR and \fIr\fR.
1113 The character `&' in the \fIr\fR is replaced by \fIl\fR; `\e' also quotes `&'.
1114 If \fIl\fR is empty (``''), the \fIl\fR from a previous substitution or the
1115 \fIs\fR from a previous search or event number in event specification is used.
1116 The trailing delimiter may be omitted if it is immediately followed by a newline.
1117 .TP 8
1118 &
1119 Repeat the previous substitution.
1120 .TP 8
1121 g
1122 Apply the following modifier once to each word.
1123 .TP 8
1124 a (+)
1125 Apply the following modifier as many times as possible to a single word.
1126 `a' and `g' can be used together to apply a modifier globally.
1127 With the `s' modifier, only the patterns contained in the original word are
1128 substituted, not patterns that contain any substitution result.
1129 .TP 8
1130 p
1131 Print the new command line but do not execute it.
1132 .TP 8
1133 q
1134 Quote the substituted words, preventing further substitutions.
1135 .TP 8
1136 x
1137 Like q, but break into words at blanks, tabs and newlines.
1138 .PD
1139 .RE
1140 .PP
1141 Modifiers are applied to only the first modifiable word (unless `g' is used).
1142 It is an error for no word to be modifiable.
1143 .PP
1144 For example, the `diff' command might have been written as `diff wumpus.man.old
1145 !#^:r', using `:r' to remove `.old' from the first argument on the same line
1146 (`!#^').  We could say `echo hello out there', then `echo !*:u' to capitalize
1147 `hello', `echo !*:au' to say it out loud, or `echo !*:agu' to really shout.
1148 We might follow `mail \-s "I forgot my password" rot' with `!:s/rot/root' to
1149 correct the spelling of `root' (but see \fBSpelling correction\fR for a
1150 different approach).
1151 .PP
1152 There is a special abbreviation for substitutions.
1153 `^', when it is the first character on an input line, is equivalent to `!:s^'.
1154 Thus we might have said `^rot^root' to make the spelling correction in the
1155 previous example.
1156 This is the only history substitution which does not explicitly begin with `!'.
1157 .PP
1158 (+) In \fIcsh\fR as such, only one modifier may be applied to each history
1159 or variable expansion.  In \fItcsh\fR, more than one may be used, for example
1160 .IP "" 4
1161 % mv wumpus.man /usr/man/man1/wumpus.1
1162 .br
1163 % man !$:t:r
1164 .br
1165 man wumpus
1166 .PP
1167 In \fIcsh\fR, the result would be `wumpus.1:r'.  A substitution followed by a
1168 colon may need to be insulated from it with braces:
1169 .IP "" 4
1170 > mv a.out /usr/games/wumpus
1171 .br
1172 > setenv PATH !$:h:$PATH
1173 .br
1174 Bad ! modifier: $.
1175 .br
1176 > setenv PATH !{\-2$:h}:$PATH
1177 .br
1178 setenv PATH /usr/games:/bin:/usr/bin:.
1179 .PP
1180 The first attempt would succeed in \fIcsh\fR but fails in \fItcsh\fR,
1181 because \fItcsh\fR expects another modifier after the second colon
1182 rather than `$'.
1183 .PP
1184 Finally, history can be accessed through the editor as well as through
1185 the substitutions just described.
1186 The \fIup-\fR and \fIdown-history\fR, \fIhistory-search-backward\fR and
1187 \fI-forward\fR, \fIi-search-back\fR and \fI-fwd\fR,
1188 \fIvi-search-back\fR and \fI-fwd\fR, \fIcopy-prev-word\fR
1189 and \fIinsert-last-word\fR editor commands search for
1190 events in the history list and copy them into the input buffer.
1191 The \fItoggle-literal-history\fR editor command switches between the
1192 expanded and literal forms of history lines in the input buffer.
1193 \fIexpand-history\fR and \fIexpand-line\fR expand history substitutions
1194 in the current word and in the entire input buffer respectively.
1195 .SS "Alias substitution"
1196 The shell maintains a list of aliases which can be set, unset and printed by
1197 the \fIalias\fR and \fIunalias\fR commands.  After a command line is parsed
1198 into simple commands (see \fBCommands\fR) the first word of each command,
1199 left-to-right, is checked to see if it has an alias.  If so, the first word is
1200 replaced by the alias.  If the alias contains a history reference, it undergoes
1201 \fBHistory substitution\fR (q.v.) as though the original command were the
1202 previous input line.  If the alias does not contain a history reference, the
1203 argument list is left untouched.
1204 .PP
1205 Thus if the alias for `ls' were `ls \-l' the command `ls /usr' would become `ls
1206 \-l /usr', the argument list here being undisturbed.  If the alias for `lookup'
1207 were `grep !^ /etc/passwd' then `lookup bill' would become `grep bill
1208 /etc/passwd'.  Aliases can be used to introduce parser metasyntax.  For
1209 example, `alias print 'pr \e!* | lpr'' defines a ``command'' (`print') which
1210 \fIpr\fR(1)s its arguments to the line printer.
1211 .PP
1212 Alias substitution is repeated until the first word of the command has no
1213 alias.  If an alias substitution does not change the first word (as in the
1214 previous example) it is flagged to prevent a loop.  Other loops are detected and
1215 cause an error.
1216 .PP
1217 Some aliases are referred to by the shell; see \fBSpecial aliases\fR.
1218 .SS "Variable substitution"
1219 The shell maintains a list of variables, each of which has as value a list of
1220 zero or more words.
1221 The values of shell variables can be displayed and changed with the
1222 \fIset\fR and \fIunset\fR commands.
1223 The system maintains its own list of ``environment'' variables.
1224 These can be displayed and changed with \fIprintenv\fR, \fIsetenv\fR and
1225 \fIunsetenv\fR.
1226 .PP
1227 (+) Variables may be made read-only with `set \-r' (q.v.).
1228 Read-only variables may not be modified or unset;
1229 attempting to do so will cause an error.
1230 Once made read-only, a variable cannot be made writable,
1231 so `set \-r' should be used with caution.
1232 Environment variables cannot be made read-only.
1233 .PP
1234 Some variables are set by the shell or referred to by it.
1235 For instance, the \fBargv\fR variable is an image of the shell's argument
1236 list, and words of this variable's value are referred to in special ways.
1237 Some of the variables referred to by the shell are toggles;
1238 the shell does not care what their value is, only whether they are set or not.
1239 For instance, the \fBverbose\fR variable is a toggle which causes command
1240 input to be echoed.  The \fB\-v\fR command line option sets this variable.
1241 \fBSpecial shell variables\fR lists all variables which are referred to by the shell.
1242 .PP
1243 Other operations treat variables numerically.  The `@' command permits numeric
1244 calculations to be performed and the result assigned to a variable.  Variable
1245 values are, however, always represented as (zero or more) strings.  For the
1246 purposes of numeric operations, the null string is considered to be zero, and
1247 the second and subsequent words of multi-word values are ignored.
1248 .PP
1249 After the input line is aliased and parsed, and before each command is
1250 executed, variable substitution is performed keyed by `$' characters.  This
1251 expansion can be prevented by preceding the `$' with a `\e' except within `"'s
1252 where it \fIalways\fR occurs, and within `''s where it \fInever\fR occurs.
1253 Strings quoted by `\`' are interpreted later (see \fBCommand substitution\fR
1254 below) so `$' substitution does not occur there until later,
1255 if at all.  A `$' is passed unchanged if followed by a blank, tab, or
1256 end-of-line.
1257 .PP
1258 Input/output redirections are recognized before variable expansion, and are
1259 variable expanded separately.  Otherwise, the command name and entire argument
1260 list are expanded together.  It is thus possible for the first (command) word
1261 (to this point) to generate more than one word, the first of which becomes the
1262 command name, and the rest of which become arguments.
1263 .PP
1264 Unless enclosed in `"' or given the `:q' modifier the results of variable
1265 substitution may eventually be command and filename substituted.  Within `"', a
1266 variable whose value consists of multiple words expands to a (portion of a)
1267 single word, with the words of the variable's value separated by blanks.  When
1268 the `:q' modifier is applied to a substitution the variable will expand to
1269 multiple words with each word separated by a blank and quoted to prevent later
1270 command or filename substitution.
1271 .PP
1272 The following metasequences are provided for introducing variable values into
1273 the shell input.  Except as noted, it is an error to reference a variable which
1274 is not set.
1275 .PP
1276 .PD 0
1277 $\fIname\fR
1278 .TP 8
1279 ${\fIname\fR}
1280 Substitutes the words of the value of variable \fIname\fR, each separated
1281 by a blank.  Braces insulate \fIname\fR from following characters which would
1282 otherwise be part of it.  Shell variables have names consisting of
1283 letters and digits starting with a letter.  The underscore character is
1284 considered a letter.  If \fIname\fR is not a shell variable, but is set in the
1285 environment, then that value is returned (but some of the other forms
1286 given below are not available in this case).
1287 .PP
1288 $\fIname\fR[\fIselector\fR]
1289 .TP 8
1290 ${\fIname\fR[\fIselector\fR]}
1291 Substitutes only the selected words from the value of \fIname\fR.
1292 The \fIselector\fR is subjected to `$' substitution and may consist of
1293 a single number or two numbers separated by a `\-'.
1294 The first word of a variable's value is numbered `1'.
1295 If the first number of a range is omitted it defaults to `1'.
1296 If the last member of a range is omitted it defaults to `$#\fIname\fR'.
1297 The \fIselector\fR `*' selects all words.
1298 It is not an error for a range to be empty if the
1299 second argument is omitted or in range.
1300 .TP 8
1301 $0
1302 Substitutes the name of the file from which command input
1303 is being read.  An error occurs if the name is not known.
1304 .PP
1305 $\fInumber\fR
1306 .TP 8
1307 ${\fInumber\fR}
1308 Equivalent to `$argv[\fInumber\fR]'.
1309 .TP 8
1310 $*
1311 Equivalent to `$argv', which is equivalent to `$argv[*]'.
1312 .PD
1313 .PP
1314 The `:' modifiers described under \fBHistory substitution\fR, except for `:p',
1315 can be applied to the substitutions above.  More than one may be used.  (+)
1316 Braces may be needed to insulate a variable substitution from a literal colon
1317 just as with \fBHistory substitution\fR (q.v.); any modifiers must appear
1318 within the braces.
1319 .PP
1320 The following substitutions can not be modified with `:' modifiers.
1321 .PP
1322 .PD 0
1323 $?\fIname\fR
1324 .TP 8
1325 ${?\fIname\fR}
1326 Substitutes the string `1' if \fIname\fR is set, `0' if it is not.
1327 .TP 8
1328 $?0
1329 Substitutes `1' if the current input filename is known, `0' if it is not.
1330 Always `0' in interactive shells.
1331 .PP
1332 $#\fIname\fR
1333 .TP 8
1334 ${#\fIname\fR}
1335 Substitutes the number of words in \fIname\fR.
1336 .TP 8
1337 $#
1338 Equivalent to `$#argv'.  (+)
1339 .PP
1340 $%\fIname\fR
1341 .TP 8
1342 ${%\fIname\fR}
1343 Substitutes the number of characters in \fIname\fR.  (+)
1344 .PP
1345 $%\fInumber\fR
1346 .TP 8
1347 ${%\fInumber\fR}
1348 Substitutes the number of characters in $argv[\fInumber\fR].  (+)
1349 .TP 8
1350 $?
1351 Equivalent to `$status'.  (+)
1352 .TP 8
1353 $$
1354 Substitutes the (decimal) process number of the (parent) shell.
1355 .TP 8
1356 $!
1357 Substitutes the (decimal) process number of the last
1358 background process started by this shell.  (+)
1359 .TP 8
1360 $_
1361 Substitutes the command line of the last command executed.  (+)
1362 .TP 8
1363 $<
1364 Substitutes a line from the standard input, with no further interpretation
1365 thereafter.  It can be used to read from the keyboard in a shell script.
1366 (+) While \fIcsh\fR always quotes $<, as if it were equivalent to `$<:q',
1367 \fItcsh\fR does not.  Furthermore, when \fItcsh\fR is waiting for a line to be
1368 typed the user may type an interrupt to interrupt the sequence into
1369 which the line is to be substituted, but \fIcsh\fR does not allow this.
1370 .PD
1371 .PP
1372 The editor command \fIexpand-variables\fR, normally bound to `^X-$',
1373 can be used to interactively expand individual variables.
1374 .SS "Command, filename and directory stack substitution"
1375 The remaining substitutions are applied selectively to the arguments of builtin
1376 commands.  This means that portions of expressions which are not evaluated are
1377 not subjected to these expansions.  For commands which are not internal to the
1378 shell, the command name is substituted separately from the argument list.  This
1379 occurs very late, after input-output redirection is performed, and in a child
1380 of the main shell.
1381 .SS "Command substitution"
1382 Command substitution is indicated by a command enclosed in `\`'.  The output
1383 from such a command is broken into separate words at blanks, tabs and newlines,
1384 and null words are discarded.  The output is variable and command substituted
1385 and put in place of the original string.
1386 .PP
1387 Command substitutions inside double
1388 quotes (`"') retain blanks and tabs; only newlines force new words.  The single
1389 final newline does not force a new word in any case.  It is thus possible for a
1390 command substitution to yield only part of a word, even if the command outputs
1391 a complete line.
1392 .PP
1393 By default, the shell since version 6.12 replaces all newline and carriage 
1394 return characters in the command by spaces.  If this is switched off by
1395 unsetting \fBcsubstnonl\fR, newlines separate commands as usual.
1396 .SS "Filename substitution"
1397 If a word contains any of the characters `*', `?', `[' or `{' or begins with
1398 the character `~' it is a candidate for filename substitution, also known as
1399 ``globbing''.  This word is then regarded as a pattern (``glob-pattern''), and
1400 replaced with an alphabetically sorted list of file names which match the
1401 pattern.
1402 .PP
1403 In matching filenames, the character `.' at the beginning of a filename or
1404 immediately following a `/', as well as the character `/' must be matched
1405 explicitly (unless either
1406 .B globdot
1407 or
1408 .B globstar
1409 or both are set(+)).  The character `*' matches any string of characters, 
1410 including the null string.  The character `?' matches any single character.  
1411 The sequence `[...]' matches any one of the characters enclosed.  
1412 Within `[...]', a pair of
1413 characters separated by `\-' matches any character lexically between the two.
1414 .PP
1415 (+) Some glob-patterns can be negated:
1416 The sequence `[^...]' matches any single character \fInot\fR specified by the
1417 characters and/or ranges of characters in the braces.
1418 .PP
1419 An entire glob-pattern can also be negated with `^':
1420 .IP "" 4
1421 > echo *
1422 .br
1423 bang crash crunch ouch
1424 .br
1425 > echo ^cr*
1426 .br
1427 bang ouch
1428 .PP
1429 Glob-patterns which do not use `?', `*', or `[]' or which use `{}' or `~'
1430 (below) are not negated correctly.
1431 .PP
1432 The metanotation `a{b,c,d}e' is a shorthand for `abe ace ade'.
1433 Left-to-right order is preserved: `/usr/source/s1/{oldls,ls}.c' expands
1434 to `/usr/source/s1/oldls.c /usr/source/s1/ls.c'.  The results of matches are
1435 sorted separately at a low level to preserve this order:
1436 `../{memo,*box}' might expand to `../memo ../box ../mbox'.
1437 (Note that `memo' was not sorted with the results of matching `*box'.)
1438 It is not an error when this construct expands to files which do not exist,
1439 but it is possible to get an error from a command to which the expanded list
1440 is passed.
1441 This construct may be nested.
1442 As a special case the words `{', `}' and `{}' are passed undisturbed.
1443 .PP
1444 The character `~' at the beginning of a filename refers to home directories.
1445 Standing alone, i.e., `~', it expands to the invoker's home directory as
1446 reflected in the value of the \fBhome\fR shell variable.  When followed by a
1447 name consisting of letters, digits and `\-' characters the shell searches for a
1448 user with that name and substitutes their home directory; thus `~ken' might
1449 expand to `/usr/ken' and `~ken/chmach' to `/usr/ken/chmach'.  If the character
1450 `~' is followed by a character other than a letter or `/' or appears elsewhere
1451 than at the beginning of a word, it is left undisturbed.
1452 A command like `setenv MANPATH /usr/man:/usr/local/man:~/lib/man' does not,
1453 therefore, do home directory substitution as one might hope.
1454 .PP
1455 It is an error for a glob-pattern containing `*', `?', `[' or `~', with or
1456 without `^', not to match any files.  However, only one pattern in a list of
1457 glob-patterns must match a file (so that, e.g., `rm *.a *.c *.o' would fail
1458 only if there were no files in the current directory ending in `.a', `.c', or
1459 `.o'), and if the \fBnonomatch\fR shell variable is set a pattern (or list
1460 of patterns) which matches nothing is left unchanged rather than causing
1461 an error.
1462 .PP
1463 The \fBglobstar\fR shell variable can be set to allow `**' or `***' as 
1464 a file glob pattern that matches any string of characters including `/',
1465 recursively traversing any existing sub-directories.  For example, 
1466 `ls **.c' will list all the .c files in the current directory tree.
1467 If used by itself, it will match zero or more sub-directories
1468 (e.g. `ls /usr/include/**/time.h' will list any file named `time.h'
1469 in the /usr/include directory tree; `ls /usr/include/**time.h' will match 
1470 any file in the /usr/include directory tree ending in `time.h'; and
1471 `ls /usr/include/**time**.h' will match any .h file with `time' either
1472 in a subdirectory name or in the filename itself).
1473 To prevent problems with recursion, the `**' glob-pattern will not 
1474 descend into a symbolic link containing a directory.  To override this,
1475 use `***' (+)
1476 .PP
1477 The \fBnoglob\fR shell variable can be set to prevent filename substitution,
1478 and the \fIexpand-glob\fR editor command, normally bound to `^X-*', can be
1479 used to interactively expand individual filename substitutions.
1480 .SS "Directory stack substitution (+)"
1481 The directory stack is a list of directories, numbered from zero, used by the
1482 \fIpushd\fR, \fIpopd\fR and \fIdirs\fR builtin commands (q.v.).
1483 \fIdirs\fR can print, store in a file, restore and clear the directory stack
1484 at any time, and the \fBsavedirs\fR and \fBdirsfile\fR shell variables can be set to
1485 store the directory stack automatically on logout and restore it on login.
1486 The \fBdirstack\fR shell variable can be examined to see the directory stack and
1487 set to put arbitrary directories into the directory stack.
1488 .PP
1489 The character `=' followed by one or more digits expands to an entry in
1490 the directory stack.  The special case `=\-' expands to the last directory in
1491 the stack.  For example,
1492 .IP "" 4
1493 > dirs \-v
1494 .br
1495 0       /usr/bin
1496 .br
1497 1       /usr/spool/uucp
1498 .br
1499 2       /usr/accts/sys
1500 .br
1501 > echo =1
1502 .br
1503 /usr/spool/uucp
1504 .br
1505 > echo =0/calendar
1506 .br
1507 /usr/bin/calendar
1508 .br
1509 > echo =\-
1510 .br
1511 /usr/accts/sys
1512 .PP
1513 The \fBnoglob\fR and \fBnonomatch\fR shell variables and the \fIexpand-glob\fR
1514 editor command apply to directory stack as well as filename substitutions.
1515 .SS "Other substitutions (+)"
1516 There are several more transformations involving filenames, not strictly
1517 related to the above but mentioned here for completeness.
1518 \fIAny\fR filename may be expanded to a full path when the
1519 \fBsymlinks\fR variable (q.v.) is set to `expand'.
1520 Quoting prevents this expansion, and
1521 the \fInormalize-path\fR editor command does it on demand.
1522 The \fInormalize-command\fR editor command expands commands in PATH into
1523 full paths on demand.
1524 Finally, \fIcd\fR and \fIpushd\fR interpret `\-' as the old working directory
1525 (equivalent to the shell variable \fBowd\fR).
1526 This is not a substitution at all, but an abbreviation recognized by only
1527 those commands.  Nonetheless, it too can be prevented by quoting.
1528 .SS Commands
1529 The next three sections describe how the shell executes commands and
1530 deals with their input and output.
1531 .SS Simple commands, pipelines and sequences
1532 A simple command is a sequence of words, the first of which specifies the
1533 command to be executed.  A series of simple commands joined by `|' characters
1534 forms a pipeline.  The output of each command in a pipeline is connected to the
1535 input of the next.
1536 .PP
1537 Simple commands and pipelines may be joined into sequences with `;', and will
1538 be executed sequentially.  Commands and pipelines can also be joined into
1539 sequences with `||' or `&&', indicating, as in the C language, that the second
1540 is to be executed only if the first fails or succeeds respectively.
1541 .PP
1542 A simple command, pipeline or sequence may be placed in parentheses, `()',
1543 to form a simple command, which may in turn be a component of a pipeline or
1544 sequence.  A command, pipeline or sequence can be executed
1545 without waiting for it to terminate by following it with an `&'.
1546 .SS "Builtin and non-builtin command execution"
1547 Builtin commands are executed within the shell.  If any component of a
1548 pipeline except the last is a builtin command, the pipeline is executed
1549 in a subshell.
1550 .PP
1551 Parenthesized commands are always executed in a subshell.
1552 .IP "" 4
1553 (cd; pwd); pwd
1554 .PP
1555 thus prints the \fBhome\fR directory, leaving you where you were
1556 (printing this after the home directory), while
1557 .IP "" 4
1558 cd; pwd
1559 .PP
1560 leaves you in the \fBhome\fR directory.  Parenthesized commands are most often
1561 used to prevent \fIcd\fR from affecting the current shell.
1562 .PP
1563 When a command to be executed is found not to be a builtin command the shell
1564 attempts to execute the command via \fIexecve\fR(2).  Each word in the variable
1565 \fBpath\fR names a directory in which the shell will look for the
1566 command.  If the shell is not given a \fB\-f\fR option, the shell
1567 hashes the names in these directories into an internal table so that it will
1568 try an \fIexecve\fR(2) in only a directory where there is a possibility that the
1569 command resides there.  This greatly speeds command location when a large
1570 number of directories are present in the search path. This hashing mechanism is
1571 not used:
1572 .TP 4
1573 .B 1.
1574 If hashing is turned explicitly off via \fIunhash\fR.
1575 .TP 4
1576 .B 2.
1577 If the shell was given a \fB\-f\fR argument.
1578 .TP 4
1579 .B 3.
1580 For each directory component of \fBpath\fR which does not begin with a `/'.
1581 .TP 4
1582 .B 4.
1583 If the command contains a `/'.
1584 .PP
1585 In the above four cases the shell concatenates each component of the path
1586 vector with the given command name to form a path name of a file which it
1587 then attempts to execute it. If execution is successful, the search stops.
1588 .PP
1589 If the file has execute permissions but is not an executable to the system
1590 (i.e., it is neither an executable binary nor a script that specifies its
1591 interpreter), then it is assumed to be a file containing shell commands and
1592 a new shell is spawned to read it.  The \fIshell\fR special alias may be set
1593 to specify an interpreter other than the shell itself.
1594 .PP
1595 On systems which do not understand the `#!' script interpreter convention
1596 the shell may be compiled to emulate it; see the \fBversion\fR shell
1597 variable.  If so, the shell checks the first line of the file to
1598 see if it is of the form `#!\fIinterpreter\fR \fIarg\fR ...'.  If it is,
1599 the shell starts \fIinterpreter\fR with the given \fIarg\fRs and feeds the
1600 file to it on standard input.
1601 .SS Input/output
1602 The standard input and standard output of a command may be redirected with the
1603 following syntax:
1604 .PP
1605 .PD 0
1606 .TP 8
1607 < \fIname
1608 Open file \fIname\fR (which is first variable, command and filename
1609 expanded) as the standard input.
1610 .TP 8
1611 << \fIword
1612 Read the shell input up to a line which is identical to \fIword\fR.  \fIword\fR
1613 is not subjected to variable, filename or command substitution, and each input
1614 line is compared to \fIword\fR before any substitutions are done on this input
1615 line.  Unless a quoting `\e', `"', `' or `\`' appears in \fIword\fR variable and
1616 command substitution is performed on the intervening lines, allowing `\e' to
1617 quote `$', `\e' and `\`'.  Commands which are substituted have all blanks, tabs,
1618 and newlines preserved, except for the final newline which is dropped.  The
1619 resultant text is placed in an anonymous temporary file which is given to the
1620 command as standard input.
1621 .PP
1622 > \fIname
1623 .br
1624 >! \fIname
1625 .br
1626 >& \fIname
1627 .TP 8
1628 >&! \fIname
1629 The file \fIname\fR is used as standard output.  If the file does not exist
1630 then it is created; if the file exists, it is truncated, its previous contents
1631 being lost.
1632 .RS +8
1633 .PD
1634 .PP
1635 If the shell variable \fBnoclobber\fR is set, then the file must not exist or be a
1636 character special file (e.g., a terminal or `/dev/null') or an error results.
1637 This helps prevent accidental destruction of files.  In this case the `!' forms
1638 can be used to suppress this check.
1639 If \fBnotempty\fR is given in \fBnoclobber\fR, `>' is allowed on empty files;
1640 if \fBask\fR is set, an interacive confirmation is presented, rather than an
1641 error.
1642 .PP
1643 The forms involving `&' route the diagnostic output into the specified file as
1644 well as the standard output.  \fIname\fR is expanded in the same way as `<'
1645 input filenames are.
1646 .PD 0
1647 .RE
1648 .PP
1649 >> \fIname
1650 .br
1651 >>& \fIname
1652 .br
1653 >>! \fIname
1654 .TP 8
1655 >>&! \fIname
1656 Like `>', but appends output to the end of \fIname\fR.
1657 If the shell variable \fBnoclobber\fR is set, then it is an error for
1658 the file \fInot\fR to exist, unless one of the `!' forms is given.
1659 .PD
1660 .PP
1661 A command receives the environment in which the shell was invoked as modified
1662 by the input-output parameters and the presence of the command in a pipeline.
1663 Thus, unlike some previous shells, commands run from a file of shell commands
1664 have no access to the text of the commands by default; rather they receive the
1665 original standard input of the shell.  The `<<' mechanism should be used to
1666 present inline data.  This permits shell command scripts to function as
1667 components of pipelines and allows the shell to block read its input.  Note
1668 that the default standard input for a command run detached is \fInot\fR
1669 the empty file \fI/dev/null\fR, but the original standard input of the shell.
1670 If this is a terminal and if the process attempts to read from the terminal,
1671 then the process will block and the user will be notified (see \fBJobs\fR).
1672 .PP
1673 Diagnostic output may be directed through a pipe with the standard output.
1674 Simply use the form `|&' rather than just `|'.
1675 .PP
1676 The shell cannot presently redirect diagnostic output without also redirecting
1677 standard output, but `(\fIcommand\fR > \fIoutput-file\fR) >& \fIerror-file\fR'
1678 is often an acceptable workaround.  Either \fIoutput-file\fR or
1679 \fIerror-file\fR may be `/dev/tty' to send output to the terminal.
1680 .SS Features
1681 Having described how the shell accepts, parses and executes
1682 command lines, we now turn to a variety of its useful features.
1683 .SS "Control flow"
1684 The shell contains a number of commands which can be used to regulate the
1685 flow of control in command files (shell scripts) and (in limited but
1686 useful ways) from terminal input.  These commands all operate by forcing the
1687 shell to reread or skip in its input and, due to the implementation,
1688 restrict the placement of some of the commands.
1689 .PP
1690 The \fIforeach\fR, \fIswitch\fR, and \fIwhile\fR statements, as well as the
1691 \fIif-then-else\fR form of the \fIif\fR statement, require that the major
1692 keywords appear in a single simple command on an input line as shown below.
1693 .PP
1694 If the shell's input is not seekable, the shell buffers up input whenever
1695 a loop is being read and performs seeks in this internal buffer to
1696 accomplish the rereading implied by the loop.  (To the extent that this
1697 allows, backward \fIgoto\fRs will succeed on non-seekable inputs.)
1698 .SS Expressions
1699 The \fIif\fR, \fIwhile\fR and \fIexit\fR builtin commands
1700 use expressions with a common syntax.  The expressions can include any
1701 of the operators described in the next three sections.  Note that the \fI@\fR
1702 builtin command (q.v.) has its own separate syntax.
1703 .SS "Logical, arithmetical and comparison operators"
1704 These operators are similar to those of C and have the same precedence.
1705 They include
1706 .IP "" 4
1707 ||  &&  |  ^  &  ==  !=  =~  !~  <=  >=
1708 .br
1709 <  > <<  >>  +  \-  *  /  %  !  ~  (  )
1710 .PP
1711 Here the precedence increases to the right, `==' `!=' `=~' and `!~', `<='
1712 `>=' `<' and `>', `<<' and `>>', `+' and `\-', `*' `/' and `%' being, in
1713 groups, at the same level.  The `==' `!=' `=~' and `!~' operators compare
1714 their arguments as strings; all others operate on numbers.  The operators
1715 `=~' and `!~' are like `!=' and `==' except that the right hand side is a
1716 glob-pattern (see \fBFilename substitution\fR) against which the left hand
1717 operand is matched.  This reduces the need for use of the \fIswitch\fR
1718 builtin command in shell scripts when all that is really needed is
1719 pattern matching.
1720 .PP
1721 Null or
1722 missing arguments are considered `0'.  The results of all expressions are
1723 strings, which represent decimal numbers.  It is important to note that
1724 no two components of an expression can appear in the same word; except
1725 when adjacent to components of expressions which are syntactically
1726 significant to the parser (`&' `|' `<' `>' `(' `)') they should be
1727 surrounded by spaces.
1728 .SS "Command exit status"
1729 Commands can be executed in expressions and their exit status
1730 returned by enclosing them in braces (`{}').  Remember that the braces should
1731 be separated from the words of the command by spaces.  Command executions
1732 succeed, returning true, i.e., `1', if the command exits with status 0,
1733 otherwise they fail, returning false, i.e., `0'.  If more detailed status
1734 information is required then the command should be executed outside of an
1735 expression and the \fBstatus\fR shell variable examined.
1736 .SS "File inquiry operators"
1737 Some of these operators perform true/false tests on files and related
1738 objects.  They are of the form \fB\-\fIop file\fR, where \fIop\fR is one of
1739 .PP
1740 .PD 0
1741 .RS +4
1742 .TP 4
1743 .B r
1744 Read access
1745 .TP 4
1746 .B w
1747 Write access
1748 .TP 4
1749 .B x
1750 Execute access
1751 .TP 4
1752 .B X
1753 Executable in the path or shell builtin, e.g., `\-X ls' and `\-X ls\-F' are
1754 generally true, but `\-X /bin/ls' is not (+)
1755 .TP 4
1756 .B e
1757 Existence
1758 .TP 4
1759 .B o
1760 Ownership
1761 .TP 4
1762 .B z
1763 Zero size
1764 .TP 4
1765 .B s
1766 Non-zero size (+)
1767 .TP 4
1768 .B f
1769 Plain file
1770 .TP 4
1771 .B d
1772 Directory
1773 .TP 4
1774 .B l
1775 Symbolic link (+) *
1776 .TP 4
1777 .B b
1778 Block special file (+)
1779 .TP 4
1780 .B c
1781 Character special file (+)
1782 .TP 4
1783 .B p
1784 Named pipe (fifo) (+) *
1785 .TP 4
1786 .B S
1787 Socket special file (+) *
1788 .TP 4
1789 .B u
1790 Set-user-ID bit is set (+)
1791 .TP 4
1792 .B g
1793 Set-group-ID bit is set (+)
1794 .TP 4
1795 .B k
1796 Sticky bit is set (+)
1797 .TP 4
1798 .B t
1799 \fIfile\fR (which must be a digit) is an open file descriptor
1800 for a terminal device (+)
1801 .TP 4
1802 .B R
1803 Has been migrated (Convex only) (+)
1804 .TP 4
1805 .B L
1806 Applies subsequent operators in a multiple-operator test to a symbolic link
1807 rather than to the file to which the link points (+) *
1808 .RE
1809 .PD
1810 .PP
1811 \fIfile\fR is command and filename expanded and then tested to
1812 see if it has the specified relationship to the real user.  If \fIfile\fR
1813 does not exist or is inaccessible or, for the operators indicated by `*',
1814 if the specified file type does not exist on the current system,
1815 then all inquiries return false, i.e., `0'.
1816 .PP
1817 These operators may be combined for conciseness: `\-\fIxy file\fR' is
1818 equivalent to `\-\fIx file\fR && \-\fIy file\fR'.  (+) For example, `\-fx' is true
1819 (returns `1') for plain executable files, but not for directories.
1820 .PP
1821 \fBL\fR may be used in a multiple-operator test to apply subsequent operators
1822 to a symbolic link rather than to the file to which the link points.
1823 For example, `\-lLo' is true for links owned by the invoking user.
1824 \fBLr\fR, \fBLw\fR and \fBLx\fR are always true for links and false for
1825 non-links.  \fBL\fR has a different meaning when it is the last operator
1826 in a multiple-operator test; see below.
1827 .PP
1828 It is possible but not useful, and sometimes misleading, to combine operators
1829 which expect \fIfile\fR to be a file with operators which do not
1830 (e.g., \fBX\fR and \fBt\fR).  Following \fBL\fR with a non-file operator
1831 can lead to particularly strange results.
1832 .PP
1833 Other operators return other information, i.e., not just `0' or `1'.  (+)
1834 They have the same format as before; \fIop\fR may be one of
1835 .PP
1836 .PD 0
1837 .RS +4
1838 .TP 8
1839 .B A
1840 Last file access time, as the number of seconds since the epoch
1841 .TP 8
1842 .B A:
1843 Like \fBA\fR, but in timestamp format, e.g., `Fri May 14 16:36:10 1993'
1844 .TP 8
1845 .B M
1846 Last file modification time
1847 .TP 8
1848 .B M:
1849 Like \fBM\fR, but in timestamp format
1850 .TP 8
1851 .B C
1852 Last inode modification time
1853 .TP 8
1854 .B C:
1855 Like \fBC\fR, but in timestamp format
1856 .TP 8
1857 .B D
1858 Device number
1859 .TP 8
1860 .B I
1861 Inode number
1862 .TP 8
1863 .B F
1864 Composite \fBf\fRile identifier, in the form \fIdevice\fR:\fIinode\fR
1865 .TP 8
1866 .B L
1867 The name of the file pointed to by a symbolic link
1868 .TP 8
1869 .B N
1870 Number of (hard) links
1871 .TP 8
1872 .B P
1873 Permissions, in octal, without leading zero
1874 .TP 8
1875 .B P:
1876 Like \fBP\fR, with leading zero
1877 .TP 8
1878 .B P\fImode
1879 Equivalent to `\-P \fIfile\fR & \fImode\fR', e.g., `\-P22 \fIfile\fR' returns
1880 `22' if \fIfile\fR is writable by group and other, `20' if by group only,
1881 and `0' if by neither
1882 .TP 8
1883 .B P\fImode\fB:
1884 Like \fBP\fImode\fR, with leading zero
1885 .TP 8
1886 .B U
1887 Numeric userid
1888 .TP 8
1889 .B U:
1890 Username, or the numeric userid if the username is unknown
1891 .TP 8
1892 .B G
1893 Numeric groupid
1894 .TP 8
1895 .B G:
1896 Groupname, or the numeric groupid if the groupname is unknown
1897 .TP 8
1898 .B Z
1899 Size, in bytes
1900 .RE
1901 .PD
1902 .PP
1903 Only one of these operators may appear in a multiple-operator test, and it
1904 must be the last.  Note that \fBL\fR has a different meaning at the end of and
1905 elsewhere in a multiple-operator test.  Because `0' is a valid return value
1906 for many of these operators, they do not return `0' when they fail: most
1907 return `\-1', and \fBF\fR returns `:'.
1908 .PP
1909 If the shell is compiled with POSIX defined (see the \fBversion\fR shell
1910 variable), the result of a file inquiry is based on the permission bits of
1911 the file and not on the result of the \fIaccess\fR(2) system call.
1912 For example, if one tests a file with \fB\-w\fR whose permissions would
1913 ordinarily allow writing but which is on a file system mounted read-only,
1914 the test will succeed in a POSIX shell but fail in a non-POSIX shell.
1915 .PP
1916 File inquiry operators can also be evaluated with the \fIfiletest\fR builtin
1917 command (q.v.) (+).
1918 .SS Jobs
1919 The shell associates a \fIjob\fR with each pipeline.  It keeps a table of
1920 current jobs, printed by the \fIjobs\fR command, and assigns them small integer
1921 numbers.  When a job is started asynchronously with `&', the shell prints a
1922 line which looks like
1923 .IP "" 4
1924 [1] 1234
1925 .PP
1926 indicating that the job which was started asynchronously was job number 1 and
1927 had one (top-level) process, whose process id was 1234.
1928 .PP
1929 If you are running a job and wish to do something else you may hit the suspend
1930 key (usually `^Z'),
1931 which sends a STOP signal to the current job.  The shell will then normally
1932 indicate that the job has been `Suspended' and print another prompt.
1933 If the \fBlistjobs\fR shell variable is set, all jobs will be listed
1934 like the \fIjobs\fR builtin command; if it is set to `long' the listing will
1935 be in long format, like `jobs \-l'.
1936 You can then manipulate the state of the suspended job.
1937 You can put it in the
1938 ``background'' with the \fIbg\fR command or run some other commands and
1939 eventually bring the job back into the ``foreground'' with \fIfg\fR.
1940 (See also the \fIrun-fg-editor\fR editor command.)
1941 A `^Z' takes effect immediately and is like an interrupt
1942 in that pending output and unread input are discarded when it is typed.
1943 The \fIwait\fR builtin command causes the shell to wait for all background
1944 jobs to complete.
1945 .PP
1946 The `^]' key sends a delayed suspend signal, which does not generate a STOP
1947 signal until a program attempts to \fIread\fR(2) it, to the current job.
1948 This can usefully be typed ahead when you have prepared some commands for a
1949 job which you wish to stop after it has read them.
1950 The `^Y' key performs this function in \fIcsh\fR(1); in \fItcsh\fR,
1951 `^Y' is an editing command.  (+)
1952 .PP
1953 A job being run in the background stops if it tries to read from the
1954 terminal.  Background jobs are normally allowed to produce output, but this can
1955 be disabled by giving the command `stty tostop'.  If you set this tty option,
1956 then background jobs will stop when they try to produce output like they do
1957 when they try to read input.
1958 .PP
1959 There are several ways to refer to jobs in the shell.  The character `%'
1960 introduces a job name.  If you wish to refer to job number 1, you can name it
1961 as `%1'.  Just naming a job brings it to the foreground; thus `%1' is a synonym
1962 for `fg %1', bringing job 1 back into the foreground.  Similarly, saying `%1 &'
1963 resumes job 1 in the background, just like `bg %1'.  A job can also be named
1964 by an unambiguous prefix of the string typed in to start it: `%ex' would
1965 normally restart a suspended \fIex\fR(1) job, if there were only one suspended
1966 job whose name began with the string `ex'.  It is also possible to say
1967 `%?\fIstring\fR' to specify a job whose text contains \fIstring\fR, if there
1968 is only one such job.
1969 .PP
1970 The shell maintains a notion of the current and previous jobs.  In output
1971 pertaining to jobs, the current job is marked with a `+' and the previous job
1972 with a `\-'.  The abbreviations `%+', `%', and (by analogy with the syntax of
1973 the \fIhistory\fR mechanism) `%%' all refer to the current job, and `%\-' refers
1974 to the previous job.
1975 .PP
1976 The job control mechanism requires that the \fIstty\fR(1) option `new' be set
1977 on some systems.  It is an artifact from a `new' implementation of the tty
1978 driver which allows generation of interrupt characters from the keyboard to
1979 tell jobs to stop.  See \fIstty\fR(1) and the \fIsetty\fR builtin command for
1980 details on setting options in the new tty driver.
1981 .SS "Status reporting"
1982 The shell learns immediately whenever a process changes state.  It normally
1983 informs you whenever a job becomes blocked so that no further progress is
1984 possible, but only right before it prints a prompt.  This is done so that it
1985 does not otherwise disturb your work.  If, however, you set the shell variable
1986 \fBnotify\fR, the shell will notify you immediately of changes of status in
1987 background jobs.  There is also a shell command \fInotify\fR which marks a
1988 single process so that its status changes will be immediately reported.  By
1989 default \fInotify\fR marks the current process; simply say `notify' after
1990 starting a background job to mark it.
1991 .PP
1992 When you try to leave the shell while jobs are stopped, you will be
1993 warned that `There are suspended jobs.' You may use the \fIjobs\fR command to
1994 see what they are.  If you do this or immediately try to exit again, the shell
1995 will not warn you a second time, and the suspended jobs will be terminated.
1996 .SS "Automatic, periodic and timed events (+)"
1997 There are various ways to run commands and take other actions automatically
1998 at various times in the ``life cycle'' of the shell.  They are summarized here,
1999 and described in detail under the appropriate \fBBuiltin commands\fR,
2000 \fBSpecial shell variables\fR and \fBSpecial aliases\fR.
2001 .PP
2002 The \fIsched\fR builtin command puts commands in a scheduled-event list,
2003 to be executed by the shell at a given time.
2004 .PP
2005 The \fIbeepcmd\fR, \fIcwdcmd\fR, \fIperiodic\fR, \fIprecmd\fR, \fIpostcmd\fR,
2006 and \fIjobcmd\fR
2007 \fBSpecial aliases\fR can be set, respectively, to execute commands when the shell wants
2008 to ring the bell, when the working directory changes, every \fBtperiod\fR
2009 minutes, before each prompt, before each command gets executed, after each
2010 command gets executed, and when a job is started or is brought into the
2011 foreground.
2012 .PP
2013 The \fBautologout\fR shell variable can be set to log out or lock the shell
2014 after a given number of minutes of inactivity.
2015 .PP
2016 The \fBmail\fR shell variable can be set to check for new mail periodically.
2017 .PP
2018 The \fBprintexitvalue\fR shell variable can be set to print the exit status
2019 of commands which exit with a status other than zero.
2020 .PP
2021 The \fBrmstar\fR shell variable can be set to ask the user, when `rm *' is
2022 typed, if that is really what was meant.
2023 .PP
2024 The \fBtime\fR shell variable can be set to execute the \fItime\fR builtin
2025 command after the completion of any process that takes more than a given
2026 number of CPU seconds.
2027 .PP
2028 The \fBwatch\fR and \fBwho\fR shell variables can be set to report when
2029 selected users log in or out, and the \fIlog\fR builtin command reports
2030 on those users at any time.
2031 .SS "Native Language System support (+)"
2032 The shell is eight bit clean
2033 (if so compiled; see the \fBversion\fR shell variable)
2034 and thus supports character sets needing this capability.
2035 NLS support differs depending on whether or not
2036 the shell was compiled to use the system's NLS (again, see \fBversion\fR).
2037 In either case, 7-bit ASCII is the default character code
2038 (e.g., the classification of which characters are printable) and sorting,
2039 and changing the \fBLANG\fR or \fBLC_CTYPE\fR environment variables
2040 causes a check for possible changes in these respects.
2041 .PP
2042 When using the system's NLS, the \fIsetlocale\fR(3) function is called
2043 to determine appropriate character code/classification and sorting
2044 (e.g., a 'en_CA.UTF-8' would yield "UTF-8" as a character code).
2045 This function typically examines the \fBLANG\fR and \fBLC_CTYPE\fR
2046 environment variables; refer to the system documentation for further details.
2047 When not using the system's NLS, the shell simulates it by assuming that the
2048 ISO 8859-1 character set is used
2049 whenever either of the \fBLANG\fR and \fBLC_CTYPE\fR variables are set, regardless of
2050 their values.  Sorting is not affected for the simulated NLS.
2051 .PP
2052 In addition, with both real and simulated NLS, all printable
2053 characters in the range \e200\-\e377, i.e., those that have
2054 M-\fIchar\fR bindings, are automatically rebound to \fIself-insert-command\fR.
2055 The corresponding binding for the escape-\fIchar\fR sequence, if any, is
2056 left alone.
2057 These characters are not rebound if the \fBNOREBIND\fR environment variable
2058 is set.  This may be useful for the simulated NLS or a primitive real NLS
2059 which assumes full ISO 8859-1.  Otherwise, all M-\fIchar\fR bindings in the
2060 range \e240\-\e377 are effectively undone.
2061 Explicitly rebinding the relevant keys with \fIbindkey\fR
2062 is of course still possible.
2063 .PP
2064 Unknown characters (i.e., those that are neither printable nor control
2065 characters) are printed in the format \ennn.
2066 If the tty is not in 8 bit mode, other 8 bit characters are printed by
2067 converting them to ASCII and using standout mode.  The shell
2068 never changes the 7/8 bit mode of the tty and tracks user-initiated
2069 changes of 7/8 bit mode.  NLS users (or, for that matter, those who want to
2070 use a meta key) may need to explicitly set
2071 the tty in 8 bit mode through the appropriate \fIstty\fR(1)
2072 command in, e.g., the \fI~/.login\fR file.
2073 .SS "OS variant support (+)"
2074 A number of new builtin commands are provided to support features in
2075 particular operating systems.  All are described in detail in the
2076 \fBBuiltin commands\fR section.
2077 .PP
2078 On systems that support TCF (aix-ibm370, aix-ps2),
2079 \fIgetspath\fR and \fIsetspath\fR get and set the system execution path,
2080 \fIgetxvers\fR and \fIsetxvers\fR get and set the experimental version prefix
2081 and \fImigrate\fR migrates processes between sites.  The \fIjobs\fR builtin
2082 prints the site on which each job is executing.
2083 .PP
2084 Under BS2000, \fIbs2cmd\fR executes commands of the underlying BS2000/OSD
2085 operating system.
2086 .PP
2087 Under Domain/OS, \fIinlib\fR adds shared libraries to the current environment,
2088 \fIrootnode\fR changes the rootnode and \fIver\fR changes the systype.
2089 .PP
2090 Under Mach, \fIsetpath\fR is equivalent to Mach's \fIsetpath\fR(1).
2091 .PP
2092 Under Masscomp/RTU and Harris CX/UX, \fIuniverse\fR sets the universe.
2093 .PP
2094 Under Harris CX/UX, \fIucb\fR or \fIatt\fR runs a command under the specified
2095 universe.
2096 .PP
2097 Under Convex/OS, \fIwarp\fR prints or sets the universe.
2098 .PP
2099 The \fBVENDOR\fR, \fBOSTYPE\fR and \fBMACHTYPE\fR environment variables
2100 indicate respectively the vendor, operating system and machine type
2101 (microprocessor class or machine model) of the
2102 system on which the shell thinks it is running.
2103 These are particularly useful when sharing one's home directory between several
2104 types of machines; one can, for example,
2105 .IP "" 4
2106 set path = (~/bin.$MACHTYPE /usr/ucb /bin /usr/bin .)
2107 .PP
2108 in one's \fI~/.login\fR and put executables compiled for each machine in the
2109 appropriate directory.
2110 .PP
2111 The \fBversion\fR shell
2112 variable indicates what options were chosen when the shell was compiled.
2113 .PP
2114 Note also the \fInewgrp\fR builtin, the \fBafsuser\fR and
2115 \fBecho_style\fR shell variables and the system-dependent locations of
2116 the shell's input files (see \fBFILES\fR).
2117 .SS "Signal handling"
2118 Login shells ignore interrupts when reading the file \fI~/.logout\fR.
2119 The shell ignores quit signals unless started with \fB\-q\fR.
2120 Login shells catch the terminate signal, but non-login shells inherit the
2121 terminate behavior from their parents.
2122 Other signals have the values which the shell inherited from its parent.
2123 .PP
2124 In shell scripts, the shell's handling of interrupt and terminate signals
2125 can be controlled with \fIonintr\fR, and its handling of hangups can be
2126 controlled with \fIhup\fR and \fInohup\fR.
2127 .PP
2128 The shell exits on a hangup (see also the \fBlogout\fR shell variable).  By
2129 default, the shell's children do too, but the shell does not send them a
2130 hangup when it exits.  \fIhup\fR arranges for the shell to send a hangup to
2131 a child when it exits, and \fInohup\fR sets a child to ignore hangups.
2132 .SS "Terminal management (+)"
2133 The shell uses three different sets of terminal (``tty'') modes:
2134 `edit', used when editing, `quote', used when quoting literal characters,
2135 and `execute', used when executing commands.
2136 The shell holds some settings in each mode constant, so commands which leave
2137 the tty in a confused state do not interfere with the shell.
2138 The shell also matches changes in the speed and padding of the tty.
2139 The list of tty modes that are kept constant
2140 can be examined and modified with the \fIsetty\fR builtin.
2141 Note that although the editor uses CBREAK mode (or its equivalent),
2142 it takes typed-ahead characters anyway.
2143 .PP
2144 The \fIechotc\fR, \fIsettc\fR and \fItelltc\fR commands can be used to
2145 manipulate and debug terminal capabilities from the command line.
2146 .PP
2147 On systems that support SIGWINCH or SIGWINDOW, the shell
2148 adapts to window resizing automatically and adjusts the environment
2149 variables \fBLINES\fR and \fBCOLUMNS\fR if set.  If the environment
2150 variable \fBTERMCAP\fR contains li# and co# fields, the shell adjusts
2151 them to reflect the new window size.
2152 .SH REFERENCE
2153 The next sections of this manual describe all of the available
2154 \fBBuiltin commands\fR, \fBSpecial aliases\fR and
2155 \fBSpecial shell variables\fR.
2156 .SS "Builtin commands"
2157 .TP 8
2158 .B %\fIjob
2159 A synonym for the \fIfg\fR builtin command.
2160 .TP 8
2161 .B %\fIjob \fB&
2162 A synonym for the \fIbg\fR builtin command.
2163 .TP 8
2164 .B :
2165 Does nothing, successfully.
2166 .PP
2167 .B @
2168 .br
2169 .B @ \fIname\fB = \fIexpr
2170 .br
2171 .B @ \fIname\fR[\fIindex\fR]\fB = \fIexpr
2172 .br
2173 .B @ \fIname\fB++\fR|\fB--
2174 .PD 0
2175 .TP 8
2176 .B @ \fIname\fR[\fIindex\fR]\fB++\fR|\fB--
2177 The first form prints the values of all shell variables.
2178 .PD
2179 .RS +8
2180 .PP
2181 The second form assigns the value of \fIexpr\fR to \fIname\fR.
2182 The third form assigns the value of \fIexpr\fR to the \fIindex\fR'th
2183 component of \fIname\fR; both \fIname\fR and its \fIindex\fR'th component
2184 must already exist.
2185 .PP
2186 \fIexpr\fR may contain the operators `*', `+', etc., as in C.
2187 If \fIexpr\fR contains `<', `>', `&' or `' then at least that part of
2188 \fIexpr\fR must be placed within `()'.
2189 Note that the syntax of \fIexpr\fR has nothing to do with that described
2190 under \fBExpressions\fR.
2191 .PP
2192 The fourth and fifth forms increment (`++') or decrement (`\-\-') \fIname\fR
2193 or its \fIindex\fR'th component.
2194 .PP
2195 The space between `@' and \fIname\fR is required.  The spaces between
2196 \fIname\fR and `=' and between `=' and \fIexpr\fR are optional.  Components of
2197 \fIexpr\fR must be separated by spaces.
2198 .RE
2199 .PD
2200 .TP 8
2201 .B alias \fR[\fIname \fR[\fIwordlist\fR]]
2202 Without arguments, prints all aliases.
2203 With \fIname\fR, prints the alias for name.
2204 With \fIname\fR and \fIwordlist\fR, assigns
2205 \fIwordlist\fR as the alias of \fIname\fR.
2206 \fIwordlist\fR is command and filename substituted.
2207 \fIname\fR may not be `alias' or `unalias'.
2208 See also the \fIunalias\fR builtin command.
2209 .TP 8
2210 .B alloc
2211 Shows the amount of dynamic memory acquired, broken down into used and free
2212 memory.  With an argument shows the number of free and used blocks in each size
2213 category.  The categories start at size 8 and double at each step.  This
2214 command's output may vary across system types, because systems other than the VAX
2215 may use a different memory allocator.
2216 .TP 8
2217 .B bg \fR[\fB%\fIjob\fR ...]
2218 Puts the specified jobs (or, without arguments, the current job)
2219 into the background, continuing each if it is stopped.
2220 \fIjob\fR may be a number, a string, `', `%', `+' or `\-' as described
2221 under \fBJobs\fR.
2222 .PP
2223 .B bindkey \fR[\fB\-l\fR|\fB\-d\fR|\fB\-e\fR|\fB\-v\fR|\fB\-u\fR] (+)
2224 .br
2225 \fBbindkey \fR[\fB\-a\fR] [\fB\-b\fR] [\fB\-k\fR] [\fB\-r\fR] [\fB\-\-\fR] \fIkey \fR(+)
2226 .PD 0
2227 .TP 8
2228 \fBbindkey \fR[\fB\-a\fR] [\fB\-b\fR] [\fB\-k\fR] [\fB\-c\fR|\fB\-s\fR] [\fB\-\-\fR] \fIkey command \fR(+)
2229 .\" .B macro can't take too many words, so I used \fB in the previous tags
2230 Without options, the first form lists all bound keys and the editor command to which each is bound,
2231 the second form lists the editor command to which \fIkey\fR is bound and
2232 the third form binds the editor command \fIcommand\fR to \fIkey\fR.
2233 Options include:
2234 .PD
2235 .PP
2236 .PD 0
2237 .RS +8
2238 .TP 4
2239 .B \-l
2240 Lists all editor commands and a short description of each.
2241 .TP 4
2242 .B \-d
2243 Binds all keys to the standard bindings for the default editor,
2244 as per \fB-e\fR and \fB-v\fR below.
2245 .TP 4
2246 .B \-e
2247 Binds all keys to \fIemacs\fR(1)\-style bindings.
2248 Unsets \fBvimode\fR.
2249 .TP 4
2250 .B \-v
2251 Binds all keys to \fIvi\fR(1)\-style bindings.
2252 Sets \fBvimode\fR.
2253 .TP 4
2254 .B \-a
2255 Lists or changes key-bindings in the alternative key map.
2256 This is the key map used in \fBvimode\fR command mode.
2257 .TP 4
2258 .B \-b
2259 \fIkey\fR is interpreted as
2260 a control character written ^\fIcharacter\fR (e.g., `^A') or
2261 C-\fIcharacter\fR (e.g., `C-A'),
2262 a meta character written M-\fIcharacter\fR (e.g., `M-A'),
2263 a function key written F-\fIstring\fR (e.g., `F-string'),
2264 or an extended prefix key written X-\fIcharacter\fR (e.g., `X-A').
2265 .TP 4
2266 .B \-k
2267 \fIkey\fR is interpreted as a symbolic arrow key name, which may be one of
2268 `down', `up', `left' or `right'.
2269 .TP 4
2270 .B \-r
2271 Removes \fIkey\fR's binding.
2272 Be careful: `bindkey \-r' does \fInot\fR bind \fIkey\fR to
2273 \fIself-insert-command\fR (q.v.), it unbinds \fIkey\fR completely.
2274 .TP 4
2275 .B \-c
2276 \fIcommand\fR is interpreted as a builtin or external command instead of an
2277 editor command.
2278 .TP 4
2279 .B \-s
2280 \fIcommand\fR is taken as a literal string and treated as terminal input
2281 when \fIkey\fR is typed.  Bound keys in \fIcommand\fR are themselves
2282 reinterpreted, and this continues for ten levels of interpretation.
2283 .TP 4
2284 .B \-\-
2285 Forces a break from option processing, so the next word is taken as \fIkey\fR
2286 even if it begins with '\-'.
2287 .TP 4
2288 .B \-u \fR(or any invalid option)
2289 Prints a usage message.
2290 .PD
2291 .PP
2292 \fIkey\fR may be a single character or a string.
2293 If a command is bound to a string, the first character of the string is bound to
2294 \fIsequence-lead-in\fR and the entire string is bound to the command.
2295 .PP
2296 Control characters in \fIkey\fR can be literal (they can be typed by preceding
2297 them with the editor command \fIquoted-insert\fR, normally bound to `^V') or
2298 written caret-character style, e.g., `^A'.  Delete is written `^?'
2299 (caret-question mark).  \fIkey\fR and \fIcommand\fR can contain backslashed
2300 escape sequences (in the style of System V \fIecho\fR(1)) as follows:
2301 .RS +4
2302 .TP 8
2303 .PD 0
2304 .B \ea
2305 Bell
2306 .TP 8
2307 .B \eb
2308 Backspace
2309 .TP 8
2310 .B \ee
2311 Escape
2312 .TP 8
2313 .B \ef
2314 Form feed
2315 .TP 8
2316 .B \en
2317 Newline
2318 .TP 8
2319 .B \er
2320 Carriage return
2321 .TP 8
2322 .B \et
2323 Horizontal tab
2324 .TP 8
2325 .B \ev
2326 Vertical tab
2327 .TP 8
2328 .B \e\fInnn
2329 The ASCII character corresponding to the octal number \fInnn\fR
2330 .PD
2331 .RE
2332 .PP
2333 `\e' nullifies the special meaning of the following character, if it has
2334 any, notably `\e' and `^'.
2335 .RE
2336 .TP 8
2337 .B bs2cmd \fIbs2000-command\fR (+)
2338 Passes \fIbs2000-command\fR to the BS2000 command interpreter for
2339 execution. Only non-interactive commands can be executed, and it is
2340 not possible to execute any command that would overlay the image
2341 of the current process, like /EXECUTE or /CALL-PROCEDURE. (BS2000 only)
2342 .TP 8
2343 .B break
2344 Causes execution to resume after the \fIend\fR of the nearest
2345 enclosing \fIforeach\fR or \fIwhile\fR.  The remaining commands on the
2346 current line are executed.  Multi-level breaks are thus
2347 possible by writing them all on one line.
2348 .TP 8
2349 .B breaksw
2350 Causes a break from a \fIswitch\fR, resuming after the \fIendsw\fR.
2351 .TP 8
2352 .B builtins \fR(+)
2353 Prints the names of all builtin commands.
2354 .TP 8
2355 .B bye \fR(+)
2356 A synonym for the \fIlogout\fR builtin command.
2357 Available only if the shell was so compiled;
2358 see the \fBversion\fR shell variable.
2359 .TP 8
2360 .B case \fIlabel\fB:
2361 A label in a \fIswitch\fR statement as discussed below.
2362 .TP 8
2363 .B cd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] [\I--\fR] [\fIname\fR]
2364 If a directory \fIname\fR is given, changes the shell's working directory
2365 to \fIname\fR.  If not, changes to \fBhome\fR, unless the \fBcdtohome\fR
2366 variable is not set, in which case a \fIname\fR is required.
2367 If \fIname\fR is `\-' it is interpreted as the previous working directory
2368 (see \fBOther substitutions\fR).  (+)
2369 If \fIname\fR is not a subdirectory of the current directory
2370 (and does not begin with `/', `./' or `../'), each component of the variable
2371 \fBcdpath\fR is checked to see if it has a subdirectory \fIname\fR.  Finally, if
2372 all else fails but \fIname\fR is a shell variable whose value
2373 begins with `/' or '.', then this is tried to see if it is a directory, and
2374 the \fB\-p\fR option is implied.
2375 .RS +8
2376 .PP
2377 With \fB\-p\fR, prints the final directory stack, just like \fIdirs\fR.
2378 The \fB\-l\fR, \fB\-n\fR and \fB\-v\fR flags have the same effect on \fIcd\fR
2379 as on \fIdirs\fR, and they imply \fB\-p\fR.  (+)
2380 Using \fB\-\-\fR forces a break from option processing so the next word
2381 is taken as the directory \fIname\fR even if it begins with '\-'. (+)
2382 .PP
2383 See also the \fBimplicitcd\fR and \fBcdtohome\fR shell variables.
2384 .RE
2385 .TP 8
2386 .B chdir
2387 A synonym for the \fIcd\fR builtin command.
2388 .TP 8
2389 .B complete \fR[\fIcommand\fR [\fIword\fB/\fIpattern\fB/\fIlist\fR[\fB:\fIselect\fR]\fB/\fR[[\fIsuffix\fR]\fB/\fR] ...]] (+)
2390 Without arguments, lists all completions.
2391 With \fIcommand\fR, lists completions for \fIcommand\fR.
2392 With \fIcommand\fR and \fIword\fR etc., defines completions.
2393 .RS +8
2394 .PP
2395 \fIcommand\fR may be a full command name or a glob-pattern
2396 (see \fBFilename substitution\fR).  It can begin with `\-' to indicate that
2397 completion should be used only when \fIcommand\fR is ambiguous.
2398 .PP
2399 \fIword\fR specifies which word relative to the current word
2400 is to be completed, and may be one of the following:
2401 .PP
2402 .PD 0
2403 .RS +4
2404 .TP 4
2405 .B c
2406 Current-word completion.
2407 \fIpattern\fR is a glob-pattern which must match the beginning of the current word on
2408 the command line.  \fIpattern\fR is ignored when completing the current word.
2409 .TP 4
2410 .B C
2411 Like \fBc\fR, but includes \fIpattern\fR when completing the current word.
2412 .TP 4
2413 .B n
2414 Next-word completion.
2415 \fIpattern\fR is a glob-pattern which must match the beginning of the previous word on
2416 the command line.
2417 .TP 4
2418 .B N
2419 Like \fBn\fR, but must match the beginning of the word two before the current word.
2420 .TP 4
2421 .B p
2422 Position-dependent completion.
2423 \fIpattern\fR is a numeric range, with the same syntax used to index shell
2424 variables, which must include the current word.
2425 .PD
2426 .RE
2427 .PP
2428 \fIlist\fR, the list of possible completions, may be one of the following:
2429 .PP
2430 .PD 0
2431 .RS +4
2432 .TP 8
2433 .B a
2434 Aliases
2435 .TP 8
2436 .B b
2437 Bindings (editor commands)
2438 .TP 8
2439 .B c
2440 Commands (builtin or external commands)
2441 .TP 8
2442 .B C
2443 External commands which begin with the supplied path prefix
2444 .TP 8
2445 .B d
2446 Directories
2447 .TP 8
2448 .B D
2449 Directories which begin with the supplied path prefix
2450 .TP 8
2451 .B e
2452 Environment variables
2453 .TP 8
2454 .B f
2455 Filenames
2456 .TP 8
2457 .B F
2458 Filenames which begin with the supplied path prefix
2459 .TP 8
2460 .B g
2461 Groupnames
2462 .TP 8
2463 .B j
2464 Jobs
2465 .TP 8
2466 .B l
2467 Limits
2468 .TP 8
2469 .B n
2470 Nothing
2471 .TP 8
2472 .B s
2473 Shell variables
2474 .TP 8
2475 .B S
2476 Signals
2477 .TP 8
2478 .B t
2479 Plain (``text'') files
2480 .TP 8
2481 .B T
2482 Plain (``text'') files which begin with the supplied path prefix
2483 .TP 8
2484 .B v
2485 Any variables
2486 .TP 8
2487 .B u
2488 Usernames
2489 .TP 8
2490 .B x
2491 Like \fBn\fR, but prints \fIselect\fR when \fIlist-choices\fR is used.
2492 .TP 8
2493 .B X
2494 Completions
2495 .TP 8
2496 $\fIvar\fR
2497 Words from the variable \fIvar\fR
2498 .TP 8
2499 (...)
2500 Words from the given list
2501 .TP 8
2502 \`...\`
2503 Words from the output of command
2504 .PD
2505 .RE
2506 .PP
2507 \fIselect\fR is an optional glob-pattern.
2508 If given, words from only \fIlist\fR that match \fIselect\fR are considered
2509 and the \fBfignore\fR shell variable is ignored.
2510 The last three types of completion may not have a \fIselect\fR
2511 pattern, and \fBx\fR uses \fIselect\fR as an explanatory message when
2512 the \fIlist-choices\fR editor command is used.
2513 .PP
2514 \fIsuffix\fR is a single character to be appended to a successful
2515 completion.  If null, no character is appended.  If omitted (in which
2516 case the fourth delimiter can also be omitted), a slash is appended to
2517 directories and a space to other words.
2518 .PP
2519 \fIcommand\fR invoked from \`...\` version has additional environment
2520 variable set, the variable name is \%\fBCOMMAND_LINE\fR\% and
2521 contains (as its name indicates) contents of the current (already
2522 typed in) command line. One can examine and use contents of the
2523 \%\fBCOMMAND_LINE\fR\% variable in her custom script to build more
2524 sophisticated completions (see completion for svn(1) included in
2525 this package).
2526 .PP
2527 Now for some examples.  Some commands take only directories as arguments,
2528 so there's no point completing plain files.
2529 .IP "" 4
2530 > complete cd 'p/1/d/'
2531 .PP
2532 completes only the first word following `cd' (`p/1') with a directory.
2533 \fBp\fR-type completion can also be used to narrow down command completion:
2534 .IP "" 4
2535 > co[^D]
2536 .br
2537 complete compress
2538 .br
2539 > complete \-co* 'p/0/(compress)/'
2540 .br
2541 > co[^D]
2542 .br
2543 > compress
2544 .PP
2545 This completion completes commands (words in position 0, `p/0')
2546 which begin with `co' (thus matching `co*') to `compress' (the only
2547 word in the list).
2548 The leading `\-' indicates that this completion is to be used with only
2549 ambiguous commands.
2550 .IP "" 4
2551 > complete find 'n/\-user/u/'
2552 .PP
2553 is an example of \fBn\fR-type completion.  Any word following `find' and
2554 immediately following `\-user' is completed from the list of users.
2555 .IP "" 4
2556 > complete cc 'c/\-I/d/'
2557 .PP
2558 demonstrates \fBc\fR-type completion.  Any word following `cc' and beginning
2559 with `\-I' is completed as a directory.  `\-I' is not taken as part of the
2560 directory because we used lowercase \fBc\fR.
2561 .PP
2562 Different \fIlist\fRs are useful with different commands.
2563 .IP "" 4
2564 > complete alias 'p/1/a/'
2565 .br
2566 > complete man 'p/*/c/'
2567 .br
2568 > complete set 'p/1/s/'
2569 .br
2570 > complete true 'p/1/x:Truth has no options./'
2571 .PP
2572 These complete words following `alias' with aliases, `man' with commands,
2573 and `set' with shell variables.
2574 `true' doesn't have any options, so \fBx\fR does nothing when completion
2575 is attempted and prints `Truth has no options.' when completion choices are listed.
2576 .PP
2577 Note that the \fIman\fR example, and several other examples below, could
2578 just as well have used 'c/*' or 'n/*' as 'p/*'.
2579 .PP
2580 Words can be completed from a variable evaluated at completion time,
2581 .IP "" 4
2582 > complete ftp 'p/1/$hostnames/'
2583 .br
2584 > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu)
2585 .br
2586 > ftp [^D]
2587 .br
2588 rtfm.mit.edu tesla.ee.cornell.edu
2589 .br
2590 > ftp [^C]
2591 .br
2592 > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net)
2593 .br
2594 > ftp [^D]
2595 .br
2596 rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net
2597 .PP
2598 or from a command run at completion time:
2599 .IP "" 4
2600 > complete kill 'p/*/\`ps | awk \e{print\e \e$1\e}\`/'
2601 .br
2602 > kill \-9 [^D]
2603 .br
2604 23113 23377 23380 23406 23429 23529 23530 PID
2605 .PP
2606 Note that the \fIcomplete\fR command does not itself quote its arguments,
2607 so the braces, space and `$' in `{print $1}' must be quoted explicitly.
2608 .PP
2609 One command can have multiple completions:
2610 .IP "" 4
2611 > complete dbx 'p/2/(core)/' 'p/*/c/'
2612 .PP
2613 completes the second argument to `dbx' with the word `core' and all other
2614 arguments with commands.  Note that the positional completion is specified
2615 before the next-word completion.
2616 Because completions are evaluated from left to right, if
2617 the next-word completion were specified first it would always match
2618 and the positional completion would never be executed.  This is a
2619 common mistake when defining a completion.
2620 .PP
2621 The \fIselect\fR pattern is useful when a command takes files with only
2622 particular forms as arguments.  For example,
2623 .IP "" 4
2624 > complete cc 'p/*/f:*.[cao]/'
2625 .PP
2626 completes `cc' arguments to files ending in only `.c', `.a', or `.o'.
2627 \fIselect\fR can also exclude files, using negation of a glob-pattern as
2628 described under \fBFilename substitution\fR.  One might use
2629 .IP "" 4
2630 > complete rm 'p/*/f:^*.{c,h,cc,C,tex,1,man,l,y}/'
2631 .PP
2632 to exclude precious source code from `rm' completion.  Of course, one
2633 could still type excluded names manually or override the completion
2634 mechanism using the \fIcomplete-word-raw\fR or \fIlist-choices-raw\fR
2635 editor commands (q.v.).
2636 .PP
2637 The `C', `D', `F' and `T' \fIlist\fRs are like `c', `d', `f' and `t'
2638 respectively, but they use the \fIselect\fR argument in a different way: to
2639 restrict completion to files beginning with a particular path prefix.  For
2640 example, the Elm mail program uses `=' as an abbreviation for one's mail
2641 directory.  One might use
2642 .IP "" 4
2643 > complete elm c@=@F:$HOME/Mail/@
2644 .PP
2645 to complete `elm \-f =' as if it were `elm \-f ~/Mail/'.  Note that we used `@'
2646 instead of `/' to avoid confusion with the \fIselect\fR argument, and we used
2647 `$HOME' instead of `~' because home directory substitution works at only the
2648 beginning of a word.
2649 .PP
2650 \fIsuffix\fR is used to add a nonstandard suffix
2651 (not space or `/' for directories) to completed words.
2652 .IP "" 4
2653 > complete finger 'c/*@/$hostnames/' 'p/1/u/@'
2654 .PP
2655 completes arguments to `finger' from the list of users, appends an `@',
2656 and then completes after the `@' from the `hostnames' variable.  Note
2657 again the order in which the completions are specified.
2658 .PP
2659 Finally, here's a complex example for inspiration:
2660 .IP "" 4
2661 > complete find \e
2662 .br
2663 \&'n/\-name/f/' 'n/\-newer/f/' 'n/\-{,n}cpio/f/' \e
2664 .br
2665 \&\'n/\-exec/c/' 'n/\-ok/c/' 'n/\-user/u/' \e
2666 .br
2667 \&'n/\-group/g/' 'n/\-fstype/(nfs 4.2)/' \e
2668 .br
2669 \&'n/\-type/(b c d f l p s)/' \e
2670 .br
2671 \'c/\-/(name newer cpio ncpio exec ok user \e
2672 .br
2673 group fstype type atime ctime depth inum \e
2674 .br
2675 ls mtime nogroup nouser perm print prune \e
2676 .br
2677 size xdev)/' \e
2678 .br
2679 \&'p/*/d/'
2680 .PP
2681 This completes words following `\-name', `\-newer', `\-cpio' or `ncpio'
2682 (note the pattern which matches both) to files,
2683 words following `\-exec' or `\-ok' to commands, words following `user'
2684 and `group' to users and groups respectively
2685 and words following `\-fstype' or `\-type' to members of the
2686 given lists.  It also completes the switches themselves from the given list
2687 (note the use of \fBc\fR-type completion)
2688 and completes anything not otherwise completed to a directory.  Whew.
2689 .PP
2690 Remember that programmed completions are ignored if the word being completed
2691 is a tilde substitution (beginning with `~') or a variable (beginning with `$').
2692 See also the \fIuncomplete\fR builtin command.
2693 .RE
2694 .TP 8
2695 .B continue
2696 Continues execution of the nearest enclosing \fIwhile\fR or \fIforeach\fR.
2697 The rest of the commands on the current line are executed.
2698 .TP 8
2699 .B default:
2700 Labels the default case in a \fIswitch\fR statement.
2701 It should come after all \fIcase\fR labels.
2702 .PP
2703 .B dirs \fR[\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR]
2704 .br
2705 .B dirs \-S\fR|\fB\-L \fR[\fIfilename\fR] (+)
2706 .PD 0
2707 .TP 8
2708 .B dirs \-c \fR(+)
2709 The first form prints the directory stack.  The top of the stack is at the
2710 left and the first directory in the stack is the current directory.
2711 With \fB\-l\fR, `~' or `~\fIname\fP' in the output is expanded explicitly
2712 to \fBhome\fR or the pathname of the home directory for user \fIname\fP.  (+)
2713 With \fB\-n\fR, entries are wrapped before they reach the edge of the screen.  (+)
2714 With \fB\-v\fR, entries are printed one per line, preceded by their stack positions.  (+)
2715 If more than one of \fB\-n\fR or \fB\-v\fR is given, \fB\-v\fR takes precedence.
2716 \fB\-p\fR is accepted but does nothing.
2717 .PD
2718 .RS +8
2719 .PP
2720 With \fB\-S\fR, the second form saves the directory stack to \fIfilename\fR
2721 as a series of \fIcd\fR and \fIpushd\fR commands.
2722 With \fB\-L\fR, the shell sources \fIfilename\fR, which is presumably
2723 a directory stack file saved by the \fB\-S\fR option or the \fBsavedirs\fR
2724 mechanism.
2725 In either case, \fBdirsfile\fR is used if \fIfilename\fR is not given and
2726 \fI~/.cshdirs\fR is used if \fBdirsfile\fR is unset.
2727 .PP
2728 Note that login shells do the equivalent of `dirs \-L' on startup
2729 and, if \fBsavedirs\fR is set, `dirs \-S' before exiting.
2730 Because only \fI~/.tcshrc\fR is normally sourced before \fI~/.cshdirs\fR,
2731 \fBdirsfile\fR should be set in \fI~/.tcshrc\fR rather than \fI~/.login\fR.
2732 .PP
2733 The last form clears the directory stack.
2734 .RE
2735 .TP 8
2736 .B echo \fR[\fB\-n\fR] \fIword\fR ...
2737 Writes each \fIword\fR to the shell's standard
2738 output, separated by spaces and terminated with a newline.
2739 The \fBecho_style\fR shell variable may be set to emulate (or not) the flags and escape
2740 sequences of the BSD and/or System V versions of \fIecho\fR; see \fIecho\fR(1).
2741 .TP 8
2742 .B echotc \fR[\fB\-sv\fR] \fIarg\fR ... (+)
2743 Exercises the terminal capabilities (see \fItermcap\fR(5)) in \fIargs\fR.
2744 For example, 'echotc home' sends the cursor to the home position,
2745 \&'echotc cm 3 10' sends it to column 3 and row 10, and
2746 \&'echotc ts 0; echo "This is a test."; echotc fs' prints "This is a test."
2747 in the status line.
2748 .RS +8
2749 .PP
2750 If \fIarg\fR is 'baud', 'cols', 'lines', 'meta' or 'tabs', prints the
2751 value of that capability ("yes" or "no" indicating that the terminal does
2752 or does not have that capability).  One might use this to make the output
2753 from a shell script less verbose on slow terminals, or limit command
2754 output to the number of lines on the screen:
2755 .IP "" 4
2756 > set history=\`echotc lines\`
2757 .br
2758 > @ history\-\-
2759 .PP
2760 Termcap strings may contain wildcards which will not echo correctly.
2761 One should use double quotes when setting a shell variable to a terminal
2762 capability string, as in the following example that places the date in
2763 the status line:
2764 .IP "" 4
2765 > set tosl="\`echotc ts 0\`"
2766 .br
2767 > set frsl="\`echotc fs\`"
2768 .br
2769 > echo \-n "$tosl";date; echo \-n "$frsl"
2770 .PP
2771 With \fB\-s\fR, nonexistent capabilities return the empty string rather
2772 than causing an error.
2773 With \fB\-v\fR, messages are verbose.
2774 .RE
2775 .PP
2776 .B else
2777 .br
2778 .B end
2779 .br
2780 .B endif
2781 .PD 0
2782 .TP 8
2783 .B endsw
2784 See the description of the \fIforeach\fR, \fIif\fR, \fIswitch\fR, and
2785 \fIwhile\fR statements below.
2786 .PD
2787 .TP 8
2788 .B eval \fIarg\fR ...
2789 Treats the arguments as input to the
2790 shell and executes the resulting command(s) in the context
2791 of the current shell.  This is usually used to execute commands
2792 generated as the result of command or variable substitution,
2793 because parsing occurs before these substitutions.
2794 See \fItset\fR(1) for a sample use of \fIeval\fR.
2795 .TP 8
2796 .B exec \fIcommand\fR
2797 Executes the specified command in place of the current shell.
2798 .TP 8
2799 .B exit \fR[\fIexpr\fR]
2800 The shell exits either with the value of the specified \fIexpr\fR
2801 (an expression, as described under \fBExpressions\fR)
2802 or, without \fIexpr\fR, with the value 0.
2803 .TP 8
2804 .B fg \fR[\fB%\fIjob\fR ...]
2805 Brings the specified jobs (or, without arguments, the current job)
2806 into the foreground, continuing each if it is stopped.
2807 \fIjob\fR may be a number, a string, `', `%', `+' or `\-' as described
2808 under \fBJobs\fR.
2809 See also the \fIrun-fg-editor\fR editor command.
2810 .TP 8
2811 .B filetest \-\fIop file\fR ... (+)
2812 Applies \fIop\fR (which is a file inquiry operator as described under
2813 \fBFile inquiry operators\fR) to each \fIfile\fR and returns the results as a
2814 space-separated list.
2815 .PP
2816 .B foreach \fIname \fB(\fIwordlist\fB)
2817 .br
2818 \&...
2819 .PD 0
2820 .TP 8
2821 .B end
2822 Successively sets the variable \fIname\fR to each member of
2823 \fIwordlist\fR and executes the sequence of commands between this command
2824 and the matching \fIend\fR.  (Both \fIforeach\fR and \fIend\fR
2825 must appear alone on separate lines.)  The builtin command
2826 \fIcontinue\fR may be used to continue the loop prematurely and
2827 the builtin command \fIbreak\fR to terminate it prematurely.
2828 When this command is read from the terminal, the loop is read once
2829 prompting with `foreach? ' (or \fBprompt2\fR) before any statements in
2830 the loop are executed.  If you make a mistake typing in a
2831 loop at the terminal you can rub it out.
2832 .PD
2833 .TP 8
2834 .B getspath \fR(+)
2835 Prints the system execution path.  (TCF only)
2836 .TP 8
2837 .B getxvers \fR(+)
2838 Prints the experimental version prefix.  (TCF only)
2839 .TP 8
2840 .B glob \fIwordlist
2841 Like \fIecho\fR, but the `-n' parameter is not recognized and words are
2842 delimited by null characters in the output.  Useful for
2843 programs which wish to use the shell to filename expand a list of words.
2844 .TP 8
2845 .B goto \fIword
2846 \fIword\fR is filename and command-substituted to
2847 yield a string of the form `label'.  The shell rewinds its
2848 input as much as possible, searches for a line of the
2849 form `label:', possibly preceded by blanks or tabs, and
2850 continues execution after that line.
2851 .TP 8
2852 .B hashstat
2853 Prints a statistics line indicating how effective the
2854 internal hash table has been at locating commands (and avoiding
2855 \fIexec\fR's).  An \fIexec\fR is attempted for each component of the
2856 \fBpath\fR where the hash function indicates a possible hit, and
2857 in each component which does not begin with a `/'.
2858 .IP
2859 On machines without \fIvfork\fR(2), prints only the number and size of
2860 hash buckets.
2861 .PP
2862 .B history \fR[\fB\-hTr\fR] [\fIn\fR]
2863 .br
2864 .B history \-S\fR|\fB\-L|\fB\-M \fR[\fIfilename\fR] (+)
2865 .PD 0
2866 .TP 8
2867 .B history \-c \fR(+)
2868 The first form prints the history event list.
2869 If \fIn\fR is given only the \fIn\fR most recent events are printed or saved.
2870 With \fB\-h\fR, the history list is printed without leading numbers.  If
2871 \fB-T\fR is specified, timestamps are printed also in comment form.
2872 (This can be used to
2873 produce files suitable for loading with 'history \-L' or 'source \-h'.)
2874 With \fB\-r\fR, the order of printing is most recent
2875 first rather than oldest first.
2876 .PD
2877 .RS +8
2878 .PP
2879 With \fB\-S\fR, the second form saves the history list to \fIfilename\fR.
2880 If the first word of the \fBsavehist\fR shell variable is set to a
2881 number, at most that many lines are saved.  If the second word of
2882 \fBsavehist\fR is set to `merge', the history list is merged with the
2883 existing history file instead of replacing it (if there is one) and
2884 sorted by time stamp.  (+) Merging is intended for an environment like
2885 the X Window System
2886 with several shells in simultaneous use.  If the second word of \fBsavehist\fR
2887 is `merge' and the third word is set to `lock', the history file update
2888 will be serialized with other shell sessions that would possibly like
2889 to merge history at exactly the same time.
2890 .PP
2891 With \fB\-L\fR, the shell appends \fIfilename\fR, which is presumably a
2892 history list saved by the \fB\-S\fR option or the \fBsavehist\fR mechanism,
2893 to the history list.
2894 \fB\-M\fR is like \fB\-L\fR, but the contents of \fIfilename\fR are merged
2895 into the history list and sorted by timestamp.
2896 In either case, \fBhistfile\fR is used if \fIfilename\fR is not given and
2897 \fI~/.history\fR is used if \fBhistfile\fR is unset.
2898 `history \-L' is exactly like 'source \-h' except that it does not require a
2899 filename.
2900 .PP
2901 Note that login shells do the equivalent of `history \-L' on startup
2902 and, if \fBsavehist\fR is set, `history \-S' before exiting.
2903 Because only \fI~/.tcshrc\fR is normally sourced before \fI~/.history\fR,
2904 \fBhistfile\fR should be set in \fI~/.tcshrc\fR rather than \fI~/.login\fR.
2905 .PP
2906 If \fBhistlit\fR is set, the first and second forms print and save the literal
2907 (unexpanded) form of the history list.
2908 .PP
2909 The last form clears the history list.
2910 .RE
2911 .TP 8
2912 .B hup \fR[\fIcommand\fR] \fR(+)
2913 With \fIcommand\fR, runs \fIcommand\fR such that it will exit on a hangup
2914 signal and arranges for the shell to send it a hangup signal when the shell
2915 exits.
2916 Note that commands may set their own response to hangups, overriding \fIhup\fR.
2917 Without an argument, causes the non-interactive shell only to
2918 exit on a hangup for the remainder of the script.
2919 See also \fBSignal handling\fR and the \fInohup\fR builtin command.
2920 .TP 8
2921 .B if (\fIexpr\fB) \fIcommand
2922 If \fIexpr\fR (an expression, as described under \fBExpressions\fR)
2923 evaluates true, then \fIcommand\fR is executed.
2924 Variable substitution on \fIcommand\fR happens early, at the same time it
2925 does for the rest of the \fIif\fR command.
2926 \fIcommand\fR must be a simple command, not an alias, a pipeline, a command list
2927 or a parenthesized command list, but it may have arguments.
2928 Input/output redirection occurs even if \fIexpr\fR is
2929 false and \fIcommand\fR is thus \fInot\fR executed; this is a bug.
2930 .PP
2931 .B if (\fIexpr\fB) then
2932 .br
2933 \&...
2934 .br
2935 .B else if (\fIexpr2\fB) then
2936 .br
2937 \&...
2938 .br
2939 .B else
2940 .br
2941 \&...
2942 .PD 0
2943 .TP 8
2944 .B endif
2945 If the specified \fIexpr\fR is true then the commands to the
2946 first \fIelse\fR are executed; otherwise if \fIexpr2\fR is true then
2947 the commands to the second \fIelse\fR are executed, etc.  Any
2948 number of \fIelse-if\fR pairs are possible; only one \fIendif\fR is
2949 needed.  The \fIelse\fR part is likewise optional.  (The words
2950 \fIelse\fR and \fIendif\fR must appear at the beginning of input lines;
2951 the \fIif\fR must appear alone on its input line or after an
2952 \fIelse\fR.)
2953 .PD
2954 .TP 8
2955 .B inlib \fIshared-library\fR ... (+)
2956 Adds each \fIshared-library\fR to the current environment.  There is no way
2957 to remove a shared library.  (Domain/OS only)
2958 .TP 8
2959 .B jobs \fR[\fB\-l\fR]
2960 Lists the active jobs.  With \fB\-l\fR, lists process
2961 IDs in addition to the normal information.  On TCF systems, prints
2962 the site on which each job is executing.
2963 .PP
2964 .PD 0
2965 .TP 8
2966 .B kill \fR[\fB\-s \fIsignal\fR] \fB%\fIjob\fR|\fIpid\fR ...
2967 .PD 0
2968 .TP 8
2969 .B kill \-l
2970 The first and second forms sends the specified \fIsignal\fR (or, if none
2971 is given, the TERM (terminate) signal) to the specified jobs or processes.
2972 \fIjob\fR may be a number, a string, `', `%', `+' or `\-' as described
2973 under \fBJobs\fR.
2974 Signals are either given by number or by name (as given in
2975 \fI/usr/include/signal.h\fR, stripped of the prefix `SIG').
2976 There is no default \fIjob\fR; saying just `kill' does not send a signal
2977 to the current job.  If the signal being sent is TERM (terminate)
2978 or HUP (hangup), then the job or process is sent a
2979 CONT (continue) signal as well.
2980 The third form lists the signal names.
2981 .PD
2982 .TP 8
2983 .B limit \fR[\fB\-h\fR] [\fIresource\fR [\fImaximum-use\fR]]
2984 Limits the consumption by the current process and each
2985 process it creates to not individually exceed \fImaximum-use\fR on
2986 the specified \fIresource\fR.  If no \fImaximum-use\fR is given, then
2987 the current limit is printed; if no \fIresource\fR is given, then
2988 all limitations are given.  If the \fB\-h\fR flag is given, the
2989 hard limits are used instead of the current limits.  The
2990 hard limits impose a ceiling on the values of the current
2991 limits.  Only the super-user may raise the hard limits, but
2992 a user may lower or raise the current limits within the legal range.
2993 .RS +8
2994 .PP
2995 Controllable resources currently include (if supported by the OS):
2996 .TP
2997 \fIcputime\fR
2998 the maximum number of cpu-seconds to be used by each process
2999 .TP
3000 \fIfilesize\fR
3001 the largest single file which can be created
3002 .TP
3003 \fIdatasize\fR
3004 the maximum growth of the data+stack region via sbrk(2) beyond
3005 the end of the program text
3006 .TP
3007 \fIstacksize\fR
3008 the maximum size of the automatically-extended stack region
3009 .TP
3010 \fIcoredumpsize\fR
3011 the size of the largest core dump that will be created
3012 .TP
3013 \fImemoryuse\fR
3014 the maximum amount of physical memory a process
3015 may have allocated to it at a given time
3016 .TP
3017 \fIvmemoryuse\fR
3018 the maximum amount of virtual memory a process
3019 may have allocated to it at a given time (address space)
3020 .TP
3021 \fIvmemoryuse\fR
3022 the maximum amount of virtual memory a process
3023 may have allocated to it at a given time
3024 .TP
3025 \fIheapsize\fR
3026 the maximum amount of memory a process
3027 may allocate per \fIbrk()\fR system call
3028 .TP
3029 \fIdescriptors\fR or \fIopenfiles\fR
3030 the maximum number of open files for this process
3031 .TP
3032 \fIpseudoterminals\fR
3033 the maximum number of pseudo-terminals for this user
3034 .TP
3035 \fIkqueues\fR
3036 the maximum number of kqueues allocated for this process
3037 .TP
3038 \fIconcurrency\fR
3039 the maximum number of threads for this process
3040 .TP
3041 \fImemorylocked\fR
3042 the maximum size which a process may lock into memory using mlock(2)
3043 .TP
3044 \fImaxproc\fR
3045 the maximum number of simultaneous processes for this user id
3046 .TP
3047 \fImaxthread\fR
3048 the maximum number of simultaneous threads (lightweight processes) for this
3049 user id
3050 .TP
3051 \fIthreads\fR
3052 the maximum number of threads for this process
3053 .TP
3054 \fIsbsize\fR
3055 the maximum size of socket buffer usage for this user
3056 .TP
3057 \fIswapsize\fR
3058 the maximum amount of swap space reserved or used for this user
3059 .TP
3060 \fImaxlocks\fR
3061 the maximum number of locks for this user
3062 .TP
3063 \fIposixlocks\fR
3064 the maximum number of POSIX advisory locks for this user
3065 .TP
3066 \fImaxsignal\fR
3067 the maximum number of pending signals for this user
3068 .TP
3069 \fImaxmessage\fR
3070 the maximum number of bytes in POSIX mqueues for this user
3071 .TP
3072 \fImaxnice\fR
3073 the maximum nice priority the user is allowed to raise mapped from [19...-20]
3074 to [0...39] for this user
3075 .TP
3076 \fImaxrtprio\fR
3077 the maximum realtime priority for this user
3078 \fImaxrttime\fR
3079 the timeout for RT tasks in microseconds for this user.
3080 .PP
3081 \fImaximum-use\fR may be given as a (floating point or
3082 integer) number followed by a scale factor.  For all limits
3083 other than \fIcputime\fR the default scale is `k' or `kilobytes'
3084 (1024 bytes); a scale factor of `m' or `megabytes' or `g' or `gigabytes'
3085 may also be used.  For \fIcputime\fR the default scaling is `seconds',
3086 while `m' for minutes or `h' for hours, or a time of the
3087 form `mm:ss' giving minutes and seconds may be used.
3088 .PP
3089 If \fImaximum-use\fR  is `unlimited',
3090 then the limitation on the specified \fIresource\fR
3091 is removed (this is equivalent to the \fIunlimit\fR builtin command).
3092 .PP
3093 For both \fIresource\fR names and scale factors, unambiguous
3094 prefixes of the names suffice.
3095 .RE
3096 .TP 8
3097 .B log \fR(+)
3098 Prints the \fBwatch\fR shell variable and reports on each user indicated
3099 in \fBwatch\fR who is logged in, regardless of when they last logged in.
3100 See also \fIwatchlog\fR.
3101 .TP 8
3102 .B login
3103 Terminates a login shell, replacing it with an instance of
3104 \fI/bin/login\fR. This is one way to log off, included for
3105 compatibility with \fIsh\fR(1).
3106 .TP 8
3107 .B logout
3108 Terminates a login shell.  Especially useful if \fBignoreeof\fR is set.
3109 .TP 8
3110 .B ls\-F \fR[\-\fIswitch\fR ...] [\fIfile\fR ...] (+)
3111 Lists files like `ls \-F', but much faster.  It identifies each type of
3112 special file in the listing with a special character:
3113 .PP
3114 .RS +8
3115 .PD 0
3116 .TP 4
3117 /
3118 Directory
3119 .TP 4
3120 *
3121 Executable
3122 .TP 4
3123 #
3124 Block device
3125 .TP 4
3126 %
3127 Character device
3128 .TP 4
3129 |
3130 Named pipe (systems with named pipes only)
3131 .TP 4
3132 =
3133 Socket (systems with sockets only)
3134 .TP 4
3135 @
3136 Symbolic link (systems with symbolic links only)
3137 .TP 4
3138 +
3139 Hidden directory (AIX only) or context dependent (HP/UX only)
3140 .TP 4
3141 :
3142 Network special (HP/UX only)
3143 .PD
3144 .PP
3145 If the \fBlistlinks\fR shell variable is set, symbolic links are identified
3146 in more detail (on only systems that have them, of course):
3147 .PP
3148 .PD 0
3149 .TP 4
3150 @
3151 Symbolic link to a non-directory
3152 .TP 4
3153 >
3154 Symbolic link to a directory
3155 .TP 4
3156 &
3157 Symbolic link to nowhere
3158 .PD
3159 .PP
3160 \fBlistlinks\fR also slows down \fIls\-F\fR and causes partitions holding
3161 files pointed to by symbolic links to be mounted.
3162 .PP
3163 If the \fBlistflags\fR shell variable is set to `x', `a' or `A', or any
3164 combination thereof (e.g., `xA'), they are used as flags to \fIls\-F\fR,
3165 making it act like `ls \-xF', `ls \-Fa', `ls \-FA' or a combination
3166 (e.g., `ls \-FxA').
3167 On machines where `ls \-C' is not the default, \fIls\-F\fR acts like `ls \-CF',
3168 unless \fBlistflags\fR contains an `x', in which case it acts like `ls \-xF'.
3169 \fIls\-F\fR passes its arguments to \fIls\fR(1) if it is given any switches,
3170 so `alias ls ls\-F' generally does the right thing.
3171 .PP
3172 The \fBls\-F\fR builtin can list files using different colors depending on the
3173 filetype or extension.  See the \fBcolor\fR shell variable and the
3174 \fBLS_COLORS\fR environment variable.
3175 .RE
3176 .PP
3177 .B migrate \fR[\fB\-\fIsite\fR] \fIpid\fR|\fB%\fIjobid\fR ... (+)
3178 .PD 0
3179 .TP 8
3180 .B migrate \-\fIsite\fR (+)
3181 The first form migrates the process or job to the site specified or the
3182 default site determined by the system path.
3183 The second form is equivalent to `migrate \-\fIsite\fR $$': it migrates the
3184 current process to the specified site.  Migrating the shell
3185 itself can cause unexpected behavior, because the shell
3186 does not like to lose its tty.  (TCF only)
3187 .PD
3188 .TP 8
3189 .B newgrp \fR[\fB\-\fR] \fI[group]\fR (+)
3190 Equivalent to `exec newgrp'; see \fInewgrp\fR(1).
3191 Available only if the shell was so compiled;
3192 see the \fBversion\fR shell variable.
3193 .TP 8
3194 .B nice \fR[\fB+\fInumber\fR] [\fIcommand\fR]
3195 Sets the scheduling priority for the shell to \fInumber\fR, or, without
3196 \fInumber\fR, to 4.  With \fIcommand\fR, runs \fIcommand\fR at the appropriate
3197 priority.
3198 The greater the \fInumber\fR, the less cpu
3199 the process gets.  The super-user may specify negative
3200 priority by using `nice \-number ...'.  Command is always
3201 executed in a sub-shell, and the restrictions placed on
3202 commands in simple \fIif\fR statements apply.
3203 .TP 8
3204 .B nohup \fR[\fIcommand\fR]
3205 With \fIcommand\fR, runs \fIcommand\fR such that it will ignore hangup signals.
3206 Note that commands may set their own response to hangups, overriding \fInohup\fR.
3207 Without an argument, causes the non-interactive shell only to
3208 ignore hangups for the remainder of the script.
3209 See also \fBSignal handling\fR and the \fIhup\fR builtin command.
3210 .TP 8
3211 .B notify \fR[\fB%\fIjob\fR ...]
3212 Causes the shell to notify the user asynchronously when the status of any
3213 of the specified jobs (or, without %\fIjob\fR, the current job) changes,
3214 instead of waiting until the next prompt as is usual.
3215 \fIjob\fR may be a number, a string, `', `%', `+' or `\-' as described
3216 under \fBJobs\fR.
3217 See also the \fBnotify\fR shell variable.
3218 .TP 8
3219 .B onintr \fR[\fB\-\fR|\fIlabel\fR]
3220 Controls the action of the shell on interrupts.  Without arguments,
3221 restores the default action of the shell on interrupts,
3222 which is to terminate shell scripts or to return to the
3223 terminal command input level.
3224 With `\-', causes all interrupts to be ignored.
3225 With \fIlabel\fR, causes the shell to execute a `goto \fIlabel\fR'
3226 when an interrupt is received or a child process terminates because it was
3227 interrupted.
3228 .IP "" 8
3229 \fIonintr\fR is ignored if the shell is running detached and in system
3230 startup files (see \fBFILES\fR), where interrupts are disabled anyway.
3231 .TP 8
3232 .B popd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] \fR[\fB+\fIn\fR]
3233 Without arguments, pops the directory stack and returns to the new top directory.
3234 With a number `+\fIn\fR', discards the \fIn\fR'th entry in the stack.
3235 .IP "" 8
3236 Finally, all forms of \fIpopd\fR print the final directory stack,
3237 just like \fIdirs\fR.  The \fBpushdsilent\fR shell variable can be set to
3238 prevent this and the \fB\-p\fR flag can be given to override \fBpushdsilent\fR.
3239 The \fB\-l\fR, \fB\-n\fR and \fB\-v\fR flags have the same effect on \fIpopd\fR
3240 as on \fIdirs\fR.  (+)
3241 .TP 8
3242 .B printenv \fR[\fIname\fR] (+)
3243 Prints the names and values of all environment variables or,
3244 with \fIname\fR, the value of the environment variable \fIname\fR.
3245 .TP 8
3246 .B pushd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] [\fIname\fR|\fB+\fIn\fR]
3247 Without arguments, exchanges the top two elements of the directory stack.
3248 If \fBpushdtohome\fR is set, \fIpushd\fR without arguments does `pushd ~',
3249 like \fIcd\fR.  (+)
3250 With \fIname\fR, pushes the current working directory onto the directory
3251 stack and changes to \fIname\fR.
3252 If \fIname\fR is `\-' it is interpreted as the previous working directory
3253 (see \fBFilename substitution\fR).  (+)
3254 If \fBdunique\fR is set, \fIpushd\fR removes any instances of \fIname\fR
3255 from the stack before pushing it onto the stack.  (+)
3256 With a number `+\fIn\fR', rotates the \fIn\fRth element of the
3257 directory stack around to be the top element and changes to it.
3258 If \fBdextract\fR is set, however, `pushd +\fIn\fR' extracts the \fIn\fRth
3259 directory, pushes it onto the top of the stack and changes to it.  (+)
3260 .IP "" 8
3261 Finally, all forms of \fIpushd\fR print the final directory stack,
3262 just like \fIdirs\fR.  The \fBpushdsilent\fR shell variable can be set to
3263 prevent this and the \fB\-p\fR flag can be given to override \fBpushdsilent\fR.
3264 The \fB\-l\fR, \fB\-n\fR and \fB\-v\fR flags have the same effect on \fIpushd\fR
3265 as on \fIdirs\fR.  (+)
3266 .TP 8
3267 .B rehash
3268 Causes the internal hash table of the contents of the
3269 directories in the \fBpath\fR variable to be recomputed.  This is
3270 needed if the \fBautorehash\fR shell variable is not set and new
3271 commands are added to directories in \fBpath\fR while you are logged
3272 in.  With \fBautorehash\fR, a new command will be found
3273 automatically, except in the special case where another command of
3274 the same name which is located in a different directory already
3275 exists in the hash table.  Also flushes the cache of home directories
3276 built by tilde expansion.
3277 .TP 8
3278 .B repeat \fIcount command
3279 The specified \fIcommand\fR,
3280 which is subject to the same restrictions as the \fIcommand\fR
3281 in the one line \fIif\fR statement above, is executed \fIcount\fR times.
3282 I/O redirections occur exactly once, even if \fIcount\fR is 0.
3283 .TP 8
3284 .B rootnode //\fInodename \fR(+)
3285 Changes the rootnode to //\fInodename\fR, so that `/' will be interpreted
3286 as `//\fInodename\fR'.  (Domain/OS only)
3287 .PP
3288 .B sched \fR(+)
3289 .br
3290 .B sched \fR[\fB+\fR]\fIhh:mm command\fR \fR(+)
3291 .PD 0
3292 .TP 8
3293 .B sched \-\fIn\fR (+)
3294 The first form prints the scheduled-event list.
3295 The \fBsched\fR shell variable may be set to define the format in which
3296 the scheduled-event list is printed.
3297 The second form adds \fIcommand\fR to the scheduled-event list.
3298 For example,
3299 .PD
3300 .RS +8
3301 .IP "" 4
3302 > sched 11:00 echo It\e's eleven o\e'clock.
3303 .PP
3304 causes the shell to echo `It's eleven o'clock.' at 11 AM.
3305 The time may be in 12-hour AM/PM format
3306 .IP "" 4
3307 .\" TODO
3308 > sched 5pm set prompt='[%h] It\e's after 5; go home: >'
3309 .PP
3310 or may be relative to the current time:
3311 .IP "" 4
3312 > sched +2:15 /usr/lib/uucp/uucico \-r1 \-sother
3313 .PP
3314 A relative time specification may not use AM/PM format.
3315 The third form removes item \fIn\fR from the event list:
3316 .IP "" 4
3317 > sched
3318 .br
3319      1  Wed Apr  4 15:42  /usr/lib/uucp/uucico \-r1 \-sother
3320 .br
3321      2  Wed Apr  4 17:00  set prompt=[%h] It's after 5; go home: >
3322 .br
3323 > sched \-2
3324 .br
3325 > sched
3326 .br
3327      1  Wed Apr  4 15:42  /usr/lib/uucp/uucico \-r1 \-sother
3328 .PP
3329 A command in the scheduled-event list is executed just before the first
3330 prompt is printed after the time when the command is scheduled.
3331 It is possible to miss the exact time when the command is to be run, but
3332 an overdue command will execute at the next prompt.
3333 A command which comes due while the shell
3334 is waiting for user input is executed immediately.
3335 However, normal operation of an already-running command will not
3336 be interrupted so that a scheduled-event list element may be run.
3337 .PP
3338 This mechanism is similar to, but not the same as, the \fIat\fR(1)
3339 command on some Unix systems.
3340 Its major disadvantage is that it may not run a command at exactly the
3341 specified time.
3342 Its major advantage is that because \fIsched\fR runs directly from
3343 the shell, it has access to shell variables and other structures.
3344 This provides a mechanism for changing one's working environment
3345 based on the time of day.
3346 .RE
3347 .PP
3348 .B set
3349 .br
3350 .B set \fIname\fR ...
3351 .br
3352 .B set \fIname\fR\fB=\fIword\fR ...
3353 .br
3354 .B set [\-r] [\-f|\-l] \fIname\fR\fB=(\fIwordlist\fB)\fR ... (+)
3355 .br
3356 .B set \fIname[index]\fR\fB=\fIword\fR ...
3357 .br
3358 .B set \-r \fR(+)
3359 .br
3360 .B set \-r \fIname\fR ... (+)
3361 .PD 0
3362 .TP 8
3363 .B set \-r \fIname\fR\fB=\fIword\fR ... (+)
3364 The first form of the command prints the value of all shell variables.
3365 Variables which contain more than a single word print as a
3366 parenthesized word list.
3367 The second form sets \fIname\fR to the null string.
3368 The third form sets \fIname\fR to the single \fIword\fR.
3369 The fourth form sets \fIname\fR to the list of words in
3370 \fIwordlist\fR.  In all cases the value is command and filename expanded.
3371 If \fB\-r\fR is specified, the value is set read-only.  If \fB\-f\fR or
3372 \fB\-l\fR are specified, set only unique words keeping their order.
3373 \fB\-f\fR prefers the first occurrence of a word, and \fB\-l\fR the last.
3374 The fifth form sets the \fIindex\fR'th component of \fIname\fR to \fIword\fR;
3375 this component must already exist.
3376 The sixth form lists only the names of all shell variables that are read-only.
3377 The seventh form makes \fIname\fR read-only, whether or not it has a value.
3378 The eighth form is the same as the third form, but
3379 make \fIname\fR read-only at the same time.
3380 .PD
3381 .IP "" 8
3382 These arguments can be repeated to set and/or make read-only multiple variables
3383 in a single set command.  Note, however, that variable expansion
3384 happens for all arguments before any setting occurs.  Note also that `=' can
3385 be adjacent to both \fIname\fR and \fIword\fR or separated from both by
3386 whitespace, but cannot be adjacent to only one or the other.
3387 See also the \fIunset\fR builtin command.
3388 .TP 8
3389 .B setenv \fR[\fIname \fR[\fIvalue\fR]]
3390 Without arguments, prints the names and values of all environment variables.
3391 Given \fIname\fR, sets the environment variable \fIname\fR to \fIvalue\fR
3392 or, without \fIvalue\fR, to the null string.
3393 .TP 8
3394 .B setpath \fIpath \fR(+)
3395 Equivalent to \fIsetpath\fR(1).  (Mach only)
3396 .TP 8
3397 .B setspath\fR LOCAL|\fIsite\fR|\fIcpu\fR ...  (+)
3398 Sets the system execution path.  (TCF only)
3399 .TP 8
3400 .B settc \fIcap value \fR(+)
3401 Tells the shell to believe that the terminal capability \fIcap\fR
3402 (as defined in \fItermcap\fR(5)) has the value \fIvalue\fR.
3403 No sanity checking is done.
3404 Concept terminal users may have to `settc xn no' to get proper
3405 wrapping at the rightmost column.
3406 .TP 8
3407 .B setty \fR[\fB\-d\fR|\fB\-q\fR|\fB\-x\fR] [\fB\-a\fR] [[\fB+\fR|\fB\-\fR]\fImode\fR] (+)
3408 Controls which tty modes (see \fBTerminal management\fR)
3409 the shell does not allow to change.
3410 \fB\-d\fR, \fB\-q\fR or \fB\-x\fR tells \fIsetty\fR to act
3411 on the `edit', `quote' or `execute' set of tty modes respectively; without
3412 \fB\-d\fR, \fB\-q\fR or \fB\-x\fR, `execute' is used.
3413 .IP "" 8
3414 Without other arguments, \fIsetty\fR lists the modes in the chosen set
3415 which are fixed on (`+mode') or off (`\-mode').
3416 The available modes, and thus the display, vary from system to system.
3417 With \fB\-a\fR, lists all tty modes in the chosen set
3418 whether or not they are fixed.
3419 With \fB+\fImode\fR, \fB\-\fImode\fR or \fImode\fR, fixes \fImode\fR on or off
3420 or removes control from \fImode\fR in the chosen set.
3421 For example, `setty +echok echoe' fixes `echok' mode on and allows commands
3422 to turn `echoe' mode on or off, both when the shell is executing commands.
3423 .TP 8
3424 .B setxvers\fR [\fIstring\fR] (+)
3425 Set the experimental version prefix to \fIstring\fR, or removes it
3426 if \fIstring\fR is omitted.  (TCF only)
3427 .TP 8
3428 .B shift \fR[\fIvariable\fR]
3429 Without arguments, discards \fBargv\fR[1] and shifts the members of
3430 \fBargv\fR to the left.  It is an error for \fBargv\fR not to be set or to have
3431 less than one word as value.  With \fIvariable\fR, performs the
3432 same function on \fIvariable\fR.
3433 .TP 8
3434 .B source \fR[\fB\-h\fR] \fIname\fR [\fIargs\fR ...]
3435 The shell reads and executes commands from \fIname\fR.
3436 The commands are not placed on the history list.
3437 If any \fIargs\fR are given, they are placed in \fBargv\fR.  (+)
3438 \fIsource\fR commands may be nested;
3439 if they are nested too deeply the shell may run out of file descriptors.
3440 An error in a \fIsource\fR at any level terminates all nested
3441 \fIsource\fR commands.
3442 With \fB\-h\fR, commands are placed on the history list instead of being
3443 executed, much like `history \-L'.
3444 .TP 8
3445 .B stop \fB%\fIjob\fR|\fIpid\fR ...
3446 Stops the specified jobs or processes which are executing in the background.
3447 \fIjob\fR may be a number, a string, `', `%', `+' or `\-' as described
3448 under \fBJobs\fR.
3449 There is no default \fIjob\fR; saying just `stop' does not stop
3450 the current job.
3451 .TP 8
3452 .B suspend
3453 Causes the shell to stop in its tracks, much as if it had
3454 been sent a stop signal with \fB^Z\fR.  This is most often used to
3455 stop shells started by \fIsu\fR(1).
3456 .PP
3457 .B switch (\fIstring\fB)
3458 .br
3459 .B case \fIstr1\fB:
3460 .PD 0
3461 .IP "" 4
3462 \&...
3463 .br
3464 .B breaksw
3465 .PP
3466 \&...
3467 .PP
3468 .B default:
3469 .IP "" 4
3470 \&...
3471 .br
3472 .B breaksw
3473 .TP 8
3474 .B endsw
3475 Each case label is successively matched, against the
3476 specified \fIstring\fR which is first command and filename expanded.
3477 The file metacharacters `*', `?' and `[...]'  may be used
3478 in the case labels, which are variable expanded.  If none
3479 of the labels match before a `default' label is found, then
3480 the execution begins after the default label.  Each case
3481 label and the default label must appear at the beginning of
3482 a line.  The command \fIbreaksw\fR causes execution to continue
3483 after the \fIendsw\fR.  Otherwise control may fall through case
3484 labels and default labels as in C.  If no label matches and
3485 there is no default, execution continues after the \fIendsw\fR.
3486 .PD
3487 .TP 8
3488 .B telltc \fR(+)
3489 Lists the values of all terminal capabilities (see \fItermcap\fR(5)).
3490 .TP 8
3491 .B termname \fR[\fIterminal type\fR] \fR(+)
3492 Tests if \fIterminal type\fR (or the current value of \fBTERM\fR if no
3493 \fIterminal type\fR is given) has an entry in the hosts termcap(5) or
3494 terminfo(5) database. Prints the terminal type to stdout and returns 0
3495 if an entry is present otherwise returns 1.
3496 .TP 8
3497 .B time \fR[\fIcommand\fR]
3498 Executes \fIcommand\fR (which must be a simple command, not an alias,
3499 a pipeline, a command list or a parenthesized command list)
3500 and prints a time summary as described under the \fBtime\fR variable.
3501 If necessary, an extra shell is created to print the time statistic when
3502 the command completes.
3503 Without \fIcommand\fR, prints a time summary for the current shell and its
3504 children.
3505 .TP 8
3506 .B umask \fR[\fIvalue\fR]
3507 Sets the file creation mask to \fIvalue\fR, which is given in octal.
3508 Common values for the mask are
3509 002, giving all access to the group and read and execute access to others, and
3510 022, giving read and execute access to the group and others.
3511 Without \fIvalue\fR, prints the current file creation mask.
3512 .TP 8
3513 .B unalias \fIpattern\fR
3514 .br
3515 Removes all aliases whose names match \fIpattern\fR.
3516 `unalias *' thus removes all aliases.
3517 It is not an error for nothing to be \fIunalias\fRed.
3518 .TP 8
3519 .B uncomplete \fIpattern\fR (+)
3520 Removes all completions whose names match \fIpattern\fR.
3521 `uncomplete *' thus removes all completions.
3522 It is not an error for nothing to be \fIuncomplete\fRd.
3523 .TP 8
3524 .B unhash
3525 Disables use of the internal hash table to speed location of
3526 executed programs.
3527 .TP 8
3528 .B universe \fIuniverse\fR (+)
3529 Sets the universe to \fIuniverse\fR.  (Masscomp/RTU only)
3530 .TP 8
3531 .B unlimit \fR[\fB\-hf\fR] [\fIresource\fR]
3532 Removes the limitation on \fIresource\fR or, if no \fIresource\fR is
3533 specified, all \fIresource\fR limitations.
3534 With \fB\-h\fR, the corresponding hard limits are removed.
3535 Only the super-user may do this.
3536 Note that \fBunlimit\fR may not exit successful, since most systems
3537 do not allow \fIdescriptors\fR to be unlimited.
3538 With \fB\-f\fR errors are ignored.
3539 .TP 8
3540 .B unset \fIpattern
3541 Removes all variables whose names match \fIpattern\fR, unless they are read-only.
3542 `unset *' thus removes all variables unless they are read-only;
3543 this is a bad idea.
3544 It is not an error for nothing to be \fIunset\fR.
3545 .TP 8
3546 .B unsetenv \fIpattern
3547 Removes all environment variables whose names match \fIpattern\fR.
3548 `unsetenv *' thus removes all environment variables;
3549 this is a bad idea.
3550 It is not an error for nothing to be \fIunsetenv\fRed.
3551 .TP 8
3552 .B ver \fR[\fIsystype\fR [\fIcommand\fR]] (+)
3553 Without arguments, prints \fBSYSTYPE\fR.  With \fIsystype\fR, sets \fBSYSTYPE\fR
3554 to \fIsystype\fR.  With \fIsystype\fR and \fIcommand\fR, executes \fIcommand\fR
3555 under \fIsystype\fR.  \fIsystype\fR may be `bsd4.3' or `sys5.3'.
3556 (Domain/OS only)
3557 .TP 8
3558 .B wait
3559 The shell waits for all background jobs.  If the shell is interactive, an
3560 interrupt will disrupt the wait and cause the shell to print the names and job
3561 numbers of all outstanding jobs.
3562 .TP 8
3563 .B warp \fIuniverse\fR (+)
3564 Sets the universe to \fIuniverse\fR.  (Convex/OS only)
3565 .TP 8
3566 .B watchlog \fR(+)
3567 An alternate name for the \fIlog\fR builtin command (q.v.).
3568 Available only if the shell was so compiled;
3569 see the \fBversion\fR shell variable.
3570 .TP 8
3571 .B where \fIcommand\fR (+)
3572 Reports all known instances of \fIcommand\fR, including aliases, builtins and
3573 executables in \fBpath\fR.
3574 .TP 8
3575 .B which\fR \fIcommand\fR (+)
3576 Displays the command that will be executed by the shell after substitutions,
3577 \fBpath\fR searching, etc.
3578 The builtin command is just like \fIwhich\fR(1), but it correctly reports
3579 \fItcsh\fR aliases and builtins and is 10 to 100 times faster.
3580 See also the \fIwhich-command\fR editor command.
3581 .PP
3582 .B while (\fIexpr\fB)\fR
3583 .br
3584 \&...
3585 .PD 0
3586 .TP 8
3587 .B end
3588 Executes the commands between the \fIwhile\fR and the matching \fIend\fR
3589 while \fIexpr\fR (an expression, as described under \fBExpressions\fR)
3590 evaluates non-zero.
3591 \fIwhile\fR and \fIend\fR must appear alone on their input lines.
3592 \fIbreak\fR and \fIcontinue\fR may be used to terminate or continue the
3593 loop prematurely.
3594 If the input is a terminal, the user is prompted the first time
3595 through the loop as with \fIforeach\fR.
3596 .PD
3597 .SS "Special aliases (+)"
3598 If set, each of these aliases executes automatically at the indicated time.
3599 They are all initially undefined.
3600 .TP 8
3601 .B beepcmd
3602 Runs when the shell wants to ring the terminal bell.
3603 .TP 8
3604 .B cwdcmd
3605 Runs after every change of working directory.  For example, if the user is
3606 working on an X window system using \fIxterm\fR(1) and a re-parenting window
3607 manager that supports title bars such as \fItwm\fR(1) and does
3608 .RS +8
3609 .IP "" 4
3610 > alias cwdcmd  'echo \-n "^[]2;${HOST}:$cwd ^G"'
3611 .PP
3612 then the shell will change the title of the running \fIxterm\fR(1)
3613 to be the name of the host, a colon, and the full current working directory.
3614 A fancier way to do that is
3615 .IP "" 4
3616 > alias cwdcmd 'echo \-n "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"'
3617 .PP
3618 This will put the hostname and working directory on the title bar but
3619 only the hostname in the icon manager menu.
3620 .PP
3621 Note that putting a \fIcd\fR, \fIpushd\fR or \fIpopd\fR in \fIcwdcmd\fR
3622 may cause an infinite loop.  It is the author's opinion that anyone doing
3623 so will get what they deserve.
3624 .RE
3625 .TP 8
3626 .B jobcmd
3627 Runs before each command gets executed, or when the command changes state.
3628 This is similar to \fIpostcmd\fR, but it does not print builtins.
3629 .RS +8
3630 .IP "" 4
3631 > alias jobcmd  'echo \-n "^[]2\e;\e!#:q^G"'
3632 .PP
3633 then executing \fIvi foo.c\fR will put the command string in the xterm title bar.
3634 .RE
3635 .TP 8
3636 .B helpcommand
3637 Invoked by the \fBrun-help\fR editor command.  The command name for which help
3638 is sought is passed as sole argument.
3639 For example, if one does
3640 .RS +8
3641 .IP "" 4
3642 > alias helpcommand '\e!:1 --help'
3643 .PP
3644 then the help display of the command itself will be invoked, using the GNU
3645 help calling convention.
3646 Currently there is no easy way to account for various calling conventions (e.g.,
3647 the customary Unix `-h'), except by using a table of many commands.
3648 .RE
3649 .TP 8
3650 .B periodic
3651 Runs every \fBtperiod\fR minutes.  This provides a convenient means for
3652 checking on common but infrequent changes such as new mail.  For example,
3653 if one does
3654 .RS +8
3655 .IP "" 4
3656 > set tperiod = 30
3657 .br
3658 > alias periodic checknews
3659 .PP
3660 then the \fIchecknews\fR(1) program runs every 30 minutes.
3661 If \fIperiodic\fR is set but \fBtperiod\fR is unset or set to 0,
3662 \fIperiodic\fR behaves like \fIprecmd\fR.
3663 .RE
3664 .TP 8
3665 .B precmd
3666 Runs just before each prompt is printed.  For example, if one does
3667 .RS +8
3668 .IP "" 4
3669 > alias precmd date
3670 .PP
3671 then \fIdate\fR(1) runs just before the shell prompts for each command.
3672 There are no limits on what \fIprecmd\fR can be set to do, but discretion
3673 should be used.
3674 .RE
3675 .TP 8
3676 .B postcmd
3677 Runs before each command gets executed.
3678 .RS +8
3679 .IP "" 4
3680 > alias postcmd  'echo \-n "^[]2\e;\e!#:q^G"'
3681 .PP
3682 then executing \fIvi foo.c\fR will put the command string in the xterm title bar.
3683 .RE
3684 .TP 8
3685 .B shell
3686 Specifies the interpreter for executable scripts which do not themselves
3687 specify an interpreter.  The first word should be a full path name to the
3688 desired interpreter (e.g., `/bin/csh' or `/usr/local/bin/tcsh').
3689 .SS "Special shell variables"
3690 The variables described in this section have special meaning to the shell.
3691 .PP
3692 The shell sets \fBaddsuffix\fR, \fBargv\fR, \fBautologout\fR, \fBcsubstnonl\fR, \fBcommand\fR, \fBecho_style\fR,
3693 \fBedit\fR, \fBgid\fR, \fBgroup\fR, \fBhome\fR, \fBloginsh\fR, \fBoid\fR, \fBpath\fR,
3694 \fBprompt\fR, \fBprompt2\fR, \fBprompt3\fR, \fBshell\fR, \fBshlvl\fR,
3695 \fBtcsh\fR, \fBterm\fR, \fBtty\fR, \fBuid\fR, \fBuser\fR and \fBversion\fR at
3696 startup; they do not change thereafter unless changed by the user.  The shell
3697 updates \fBcwd\fR, \fBdirstack\fR, \fBowd\fR and \fBstatus\fR when necessary,
3698 and sets \fBlogout\fR on logout.
3699 .PP
3700 The shell synchronizes \fBgroup\fR, \fBhome\fR, \fBpath\fR, \fBshlvl\fR,
3701 \fBterm\fR and \fBuser\fR with the environment variables of the same names:
3702 whenever the environment variable changes the shell changes the corresponding
3703 shell variable to match (unless the shell variable is read-only) and vice
3704 versa.  Note that although \fBcwd\fR and \fBPWD\fR have identical meanings, they
3705 are not synchronized in this manner, and that the shell automatically
3706 converts between the different formats of \fBpath\fR and \fBPATH\fR.
3707 .TP 8
3708 .B addsuffix \fR(+)
3709 If set, filename completion adds `/' to the end of directories and a space
3710 to the end of normal files when they are matched exactly.
3711 Set by default.
3712 .TP 8
3713 .B afsuser \fR(+)
3714 If set, \fBautologout\fR's autolock feature uses its value instead of
3715 the local username for kerberos authentication.
3716 .TP 8
3717 .B ampm \fR(+)
3718 If set, all times are shown in 12-hour AM/PM format.
3719 .TP 8
3720 .B anyerror \fR(+)
3721 This variable selects what is propagated to the value of the
3722 \fBstatus\fR variable. For more information see the description of the
3723 \fBstatus\fR variable below.
3724 .TP 8
3725 .B argv
3726 The arguments to the shell.  Positional parameters are taken from \fBargv\fR,
3727 i.e., `$1' is replaced by `$argv[1]', etc.
3728 Set by default, but usually empty in interactive shells.
3729 .TP 8
3730 .B autocorrect \fR(+)
3731 If set, the \fIspell-word\fR editor command is invoked automatically before
3732 each completion attempt.
3733 .TP 8
3734 .B autoexpand \fR(+)
3735 If set, the \fIexpand-history\fR editor command is invoked automatically
3736 before each completion attempt. If this is set to \fIonlyhistory\fR, then
3737 only history will be expanded and a second completion will expand filenames.
3738 .TP 8
3739 .B autolist \fR(+)
3740 If set, possibilities are listed after an ambiguous completion.
3741 If set to `ambiguous', possibilities are listed only when no new
3742 characters are added by completion.
3743 .TP 8
3744 .B autologout \fR(+)
3745 The first word is the number of minutes of inactivity before automatic
3746 logout.  The optional second word is the number of minutes of inactivity
3747 before automatic locking.
3748 When the shell automatically logs out, it prints `auto-logout', sets the
3749 variable \fBlogout\fR to `automatic' and exits.
3750 When the shell automatically locks, the user is required to enter his password
3751 to continue working.  Five incorrect attempts result in automatic logout.
3752 Set to `60' (automatic logout after 60 minutes, and no locking) by default
3753 in login and superuser shells, but not if the shell thinks it is running
3754 under a window system (i.e., the \fBDISPLAY\fR environment variable is set),
3755 the tty is a pseudo-tty (pty) or the shell was not so compiled (see the
3756 \fBversion\fR shell variable).
3757 See also the \fBafsuser\fR and \fBlogout\fR shell variables.
3758 .TP 8
3759 .B autorehash \fR(+)
3760 If set, the internal hash table of the contents of the directories in the
3761 \fBpath\fR variable will be recomputed if a command is not found in the hash
3762 table.  In addition, the list of available commands will be rebuilt for each
3763 command completion or spelling correction attempt if set to `complete' or
3764 `correct' respectively; if set to `always', this will be done for both
3765 cases.
3766 .TP 8
3767 .B backslash_quote \fR(+)
3768 .\" TODO
3769 If set, backslashes (`\e') always quote `\e', `'', and `"'.  This may make
3770 complex quoting tasks easier, but it can cause syntax errors in \fIcsh\fR(1)
3771 scripts.
3772 .TP 8
3773 .B catalog
3774 The file name of the message catalog.
3775 If set, tcsh use `tcsh.${catalog}' as a message catalog instead of
3776 default `tcsh'.
3777 .TP 8
3778 .B cdpath
3779 A list of directories in which \fIcd\fR should search for
3780 subdirectories if they aren't found in the current directory.
3781 .TP 8
3782 .B cdtohome \fR(+)
3783 If not set, \fIcd\fR requires a directory \fIname\fR, and will not go to the
3784 \fBhome\fR directory if it's omitted.
3785 This is set by default.
3786 .TP 8
3787 .B color
3788 If set, it enables color display for the builtin \fBls\-F\fR and it passes
3789 \fB\-\-color=auto\fR to \fBls\fR.  Alternatively, it can be set to only
3790 \fBls\-F\fR or only \fBls\fR to enable color to only one command.  Setting
3791 it to nothing is equivalent to setting it to \fB(ls\-F ls)\fR.
3792 .TP 8
3793 .B colorcat
3794 If set, it enables color escape sequence for NLS message files.
3795 And display colorful NLS messages.
3796 .TP 8
3797 .B command \fR(+)
3798 If set, the command which was passed to the shell with the \fB-c\fR flag (q.v.).
3799 .TP 8
3800 .B compat_expr \fR(+)
3801 If set, the shell will evaluate expressions right to left, like the original
3802 \fIcsh\fR.
3803 .TP 8
3804 .B complete \fR(+)
3805 If set to `igncase', the completion becomes case insensitive.
3806 If set to `enhance', completion ignores case and considers
3807 hyphens and underscores to be equivalent; it will also treat
3808 periods, hyphens and underscores (`.', `\-' and `_') as word
3809 separators.
3810 If set to `Enhance', completion matches uppercase and underscore
3811 characters explicitly and matches lowercase and hyphens in a
3812 case-insensitive manner; it will treat periods, hyphens and underscores
3813 as word separators.
3814 .TP 8
3815 .B continue \fR(+)
3816 If set to a list of commands, the shell will continue the listed
3817 commands, instead of starting a new one.
3818 .TP 8
3819 .B continue_args \fR(+)
3820 Same as continue, but the shell will execute:
3821 .RS +8
3822 .IP "" 4
3823 echo \`pwd\` $argv > ~/.<cmd>_pause; %<cmd>
3824 .RE
3825 .TP 8
3826 .B correct \fR(+)
3827 If set to `cmd', commands are automatically spelling-corrected.
3828 If set to `complete', commands are automatically completed.
3829 If set to `all', the entire command line is corrected.
3830 .TP 8
3831 .B csubstnonl \fR(+)
3832 If set, newlines and carriage returns in command substitution are
3833 replaced by spaces.  Set by default.
3834 .TP 8
3835 .B cwd
3836 The full pathname of the current directory.
3837 See also the \fBdirstack\fR and \fBowd\fR shell variables.
3838 .TP 8
3839 .B dextract \fR(+)
3840 If set, `pushd +\fIn\fR' extracts the \fIn\fRth directory from the directory
3841 stack rather than rotating it to the top.
3842 .TP 8
3843 .B dirsfile \fR(+)
3844 The default location in which `dirs \-S' and `dirs \-L' look for
3845 a history file.  If unset, \fI~/.cshdirs\fR is used.
3846 Because only \fI~/.tcshrc\fR is normally sourced before \fI~/.cshdirs\fR,
3847 \fBdirsfile\fR should be set in \fI~/.tcshrc\fR rather than \fI~/.login\fR.
3848 .TP 8
3849 .B dirstack \fR(+)
3850 An array of all the directories on the directory stack.
3851 `$dirstack[1]' is the current working directory, `$dirstack[2]'
3852 the first directory on the stack, etc.
3853 Note that the current working directory is `$dirstack[1]' but `=0' in
3854 directory stack substitutions, etc.
3855 One can change the stack arbitrarily by setting \fBdirstack\fR,
3856 but the first element (the current working directory) is always correct.
3857 See also the \fBcwd\fR and \fBowd\fR shell variables.
3858 .TP 8
3859 .B dspmbyte \fR(+)
3860 Has an effect iff 'dspm' is listed as part of the \fBversion\fR shell variable.
3861 If set to `euc', it enables display and editing EUC-kanji(Japanese) code.
3862 If set to `sjis', it enables display and editing Shift-JIS(Japanese) code.
3863 If set to `big5', it enables display and editing Big5(Chinese) code.
3864 If set to `utf8', it enables display and editing Utf8(Unicode) code.
3865 If set to the following format, it enables display and editing of original
3866 multi-byte code format:
3867 .RS +8
3868 .IP "" 4
3869 > set dspmbyte = 0000....(256 bytes)....0000
3870 .PP
3871 The table requires \fBjust\fR 256 bytes.  Each character of 256 characters
3872 corresponds (from left to right) to the ASCII codes 0x00, 0x01, ... 0xff.  Each
3873 character
3874 .\" (position in this table?)
3875 is set to number 0,1,2 and 3.  Each number has the following meaning:
3876 .br
3877   0 ... not used for multi-byte characters.
3878 .br
3879   1 ... used for the first byte of a multi-byte character.
3880 .br
3881   2 ... used for the second byte of a multi-byte character.
3882 .br
3883   3 ... used for both the first byte and second byte of a multi-byte character.
3884 .\" SHK: I tried my best to get the following to be grammatically correct.
3885 .\" However, I still don't understand what's going on here.  In the
3886 .\" following example, there are three bytes, but the text seems to refer to
3887 .\" each nybble as a character.  What's going on here?  It this 3-byte code
3888 .\" in the table?  The text above seems to imply that there are 256
3889 .\" characters/bytes in the table.  If I get some more info on this (perhaps
3890 .\" a complete example), I could fix the text to be grammatically correct.
3891 .\" (steve.kelem@xilinx.com 1999/09/13)
3892 .PP
3893   Example:
3894 .br
3895 If set to `001322', the first character (means 0x00 of the ASCII code) and
3896 second character (means 0x01 of ASCII code) are set to `0'.  Then, it is not
3897 used for multi-byte characters.  The 3rd character (0x02) is set to '1',
3898 indicating that it is used for the first byte of a multi-byte character.
3899 The 4th character(0x03) is set '3'.  It is used for both the first byte and
3900 the second byte of a multi-byte character.  The 5th and 6th characters
3901 (0x04,0x05) are set to '2', indicating that they are used for the second
3902 byte of a multi-byte character.
3903 .PP
3904 The GNU fileutils version of ls cannot display multi-byte
3905 filenames without the -N ( --literal ) option.   If you are using
3906 this version, set the second word of dspmbyte to "ls".  If not, for
3907 example, "ls-F -l" cannot display multi-byte filenames.
3908 .PP
3909   Note:
3910 .br
3911 This variable can only be used if KANJI and DSPMBYTE has been defined at
3912 compile time.
3913 .RE
3914 .TP 8
3915 .B dunique \fR(+)
3916 If set, \fIpushd\fR removes any instances of \fIname\fR
3917 from the stack before pushing it onto the stack.
3918 .TP 8
3919 .B echo
3920 If set, each command with its arguments is echoed just before it is
3921 executed.  For non-builtin commands all expansions occur before
3922 echoing.  Builtin commands are echoed before command and filename
3923 substitution, because these substitutions are then done selectively.
3924 Set by the \fB\-x\fR command line option.
3925 .TP 8
3926 .B echo_style \fR(+)
3927 The style of the \fIecho\fR builtin.  May be set to
3928 .PP
3929 .RS +8
3930 .PD 0
3931 .TP 8
3932 bsd
3933 Don't echo a newline if the first argument is `\-n'; the default for \fIcsh\fR.
3934 .TP 8
3935 sysv
3936 Recognize backslashed escape sequences in echo strings.
3937 .TP 8
3938 both
3939 Recognize both the `\-n' flag and backslashed escape sequences; the default
3940 for \fItcsh\fR.
3941 .TP 8
3942 none
3943 Recognize neither.
3944 .PD
3945 .PP
3946 Set by default to the local system default.  The BSD and System V
3947 options are described in the \fIecho\fR(1) man pages on the appropriate
3948 systems.
3949 .RE
3950 .TP 8
3951 .B edit \fR(+)
3952 If set, the command-line editor is used.  Set by default in interactive
3953 shells.
3954 .TP 8
3955 .B editors \fR(+)
3956 A list of command names for the \fIrun-fg-editor\fR editor command to match.
3957 If not set, the \fBEDITOR\fR (`ed' if unset) and \fBVISUAL\fR (`vi' if unset)
3958 environment variables will be used instead.
3959 .TP 8
3960 .B ellipsis \fR(+)
3961 If set, the `%c'/`%.' and `%C' prompt sequences (see the \fBprompt\fR
3962 shell variable) indicate skipped directories with an ellipsis (`...')
3963 instead of `/<skipped>'.
3964 .TP 8
3965 .B euid \fR(+)
3966 The user's effective user ID.
3967 .TP 8
3968 .B euser \fR(+)
3969 The first matching passwd entry name corresponding to the effective user ID.
3970 .TP 8
3971 .B fignore \fR(+)
3972 Lists file name suffixes to be ignored by completion.
3973 .TP 8
3974 .B filec
3975 In \fItcsh\fR, completion is always used and this variable is ignored
3976 by default. If 
3977 .B edit
3978 is unset, then the traditional \fIcsh\fR completion is used.
3979 If set in \fIcsh\fR, filename completion is used.
3980 .TP 8
3981 .B gid \fR(+)
3982 The user's real group ID.
3983 .TP 8
3984 .B globdot \fR(+)
3985 If set, wild-card glob patterns will match files and directories beginning
3986 with `.' except for `.' and `..'
3987 .TP 8
3988 .B globstar \fR(+)
3989 If set, the `**' and `***' file glob patterns will match any string of 
3990 characters including `/' traversing any existing sub-directories.  (e.g. 
3991 `ls **.c' will list all the .c files in the current directory tree).
3992 If used by itself, it will match zero or more sub-directories
3993 (e.g. `ls /usr/include/**/time.h' will list any file named `time.h'
3994 in the /usr/include directory tree; whereas `ls /usr/include/**time.h'
3995 will match any file in the /usr/include directory tree ending in `time.h').
3996 To prevent problems with recursion, the `**' glob-pattern will not 
3997 descend into a symbolic link containing a directory.  To override this,
3998 use `***'
3999 .TP 8
4000 .B group \fR(+)
4001 The user's group name.
4002 .TP 8
4003 .B highlight
4004 If set, the incremental search match (in \fIi-search-back\fR and
4005 \fIi-search-fwd\fR) and the region between the mark and the cursor are
4006 highlighted in reverse video.
4007 .IP "" 8
4008 Highlighting requires more frequent terminal writes, which introduces extra
4009 overhead. If you care about terminal performance, you may want to leave this
4010 unset.
4011 .TP 8
4012 .B histchars
4013 A string value determining the characters used in \fBHistory
4014 substitution\fR (q.v.).  The first character of its value is used as
4015 the history substitution character, replacing the default character
4016 `!'.  The second character of its value replaces the character `^' in
4017 quick substitutions.
4018 .TP 8
4019 .B histdup \fR(+)
4020 Controls handling of duplicate entries in the history list.  If set to
4021 `all' only unique history events are entered in the history list.  If
4022 set to `prev' and the last history event is the same as the current
4023 command, then the current command is not entered in the history.  If
4024 set to `erase' and the same event is found in the history list, that
4025 old event gets erased and the current one gets inserted.  Note that the
4026 `prev' and `all' options renumber history events so there are no gaps.
4027 .TP 8
4028 .B histfile \fR(+)
4029 The default location in which `history \-S' and `history \-L' look for
4030 a history file.  If unset, \fI~/.history\fR is used.  \fBhistfile\fR is
4031 useful when sharing the same home directory between different machines,
4032 or when saving separate histories on different terminals.  Because only
4033 \fI~/.tcshrc\fR is normally sourced before \fI~/.history\fR,
4034 \fBhistfile\fR should be set in \fI~/.tcshrc\fR rather than
4035 \fI~/.login\fR.
4036 .TP 8
4037 .B histlit \fR(+)
4038 If set, builtin and editor commands and the \fBsavehist\fR mechanism
4039 use the literal (unexpanded) form of lines in the history list.  See
4040 also the \fItoggle-literal-history\fR editor command.
4041 .TP 8
4042 .B history
4043 The first word indicates the number of history events to save.  The
4044 optional second word (+) indicates the format in which history is
4045 printed; if not given, `%h\et%T\et%R\en' is used.  The format sequences
4046 are described below under \fBprompt\fR; note the variable meaning of
4047 `%R'.  Set to `100' by default.
4048 .TP 8
4049 .B home
4050 Initialized to the home directory of the invoker.  The filename
4051 expansion of `\fI~\fR' refers to this variable.
4052 .TP 8
4053 .B ignoreeof
4054 If set to the empty string or `0' and the input device is a terminal,
4055 the \fIend-of-file\fR command (usually generated by the user by typing
4056 `^D' on an empty line) causes the shell to print `Use "exit" to leave
4057 tcsh.' instead of exiting.  This prevents the shell from accidentally
4058 being killed.  Historically this setting exited after 26 successive
4059 EOF's to avoid infinite loops.  If set to a number \fIn\fR, the shell
4060 ignores \fIn - 1\fR consecutive \fIend-of-file\fRs and exits on the
4061 \fIn\fRth.  (+) If unset, `1' is used, i.e., the shell exits on a
4062 single `^D'.
4063 .TP 8
4064 .B implicitcd \fR(+)
4065 If set, the shell treats a directory name typed as a command as though
4066 it were a request to change to that directory.  If set to \fIverbose\fR,
4067 the change of directory is echoed to the standard output.  This behavior
4068 is inhibited in non-interactive shell scripts, or for command strings
4069 with more than one word.  Changing directory takes precedence over
4070 executing a like-named command, but it is done after alias
4071 substitutions.  Tilde and variable expansions work as expected.
4072 .TP 8
4073 .B inputmode \fR(+)
4074 If set to `insert' or `overwrite', puts the editor into that input mode
4075 at the beginning of each line.
4076 .TP 8
4077 .B killdup \fR(+)
4078 Controls handling of duplicate entries in the kill ring.  If set to
4079 `all' only unique strings are entered in the kill ring.  If set to
4080 `prev' and the last killed string is the same as the current killed
4081 string, then the current string is not entered in the ring.  If set
4082 to `erase' and the same string is found in the kill ring, the old
4083 string is erased and the current one is inserted.
4084 .TP 8
4085 .B killring \fR(+)
4086 Indicates the number of killed strings to keep in memory.  Set to `30'
4087 by default.  If unset or set to less than `2', the shell will only
4088 keep the most recently killed string.
4089 Strings are put in the killring by the editor commands that delete
4090 (kill) strings of text, e.g. \fIbackward-delete-word\fR,
4091 \fIkill-line\fR, etc, as well as the \fIcopy-region-as-kill\fR command.
4092 The \fIyank\fR editor command will yank the most recently killed string
4093 into the command-line, while \fIyank-pop\fR (see \fBEditor commands\fR)
4094 can be used to yank earlier killed strings.
4095 .TP 8
4096 .B listflags \fR(+)
4097 If set to `x', `a' or `A', or any combination thereof (e.g., `xA'), they
4098 are used as flags to \fIls\-F\fR, making it act like `ls \-xF', `ls
4099 \-Fa', `ls \-FA' or a combination (e.g., `ls \-FxA'): `a' shows all
4100 files (even if they start with a `.'), `A' shows all files but `.' and
4101 `..', and `x' sorts across instead of down.  If the second word of
4102 \fBlistflags\fR is set, it is used as the path to `ls(1)'.
4103 .TP 8
4104 .B listjobs \fR(+)
4105 If set, all jobs are listed when a job is suspended.  If set to `long',
4106 the listing is in long format.
4107 .TP 8
4108 .B listlinks \fR(+)
4109 If set, the \fIls\-F\fR builtin command shows the type of file to which
4110 each symbolic link points.
4111 .TP 8
4112 .B listmax \fR(+)
4113 The maximum number of items which the \fIlist-choices\fR editor command
4114 will list without asking first.
4115 .TP 8
4116 .B listmaxrows \fR(+)
4117 The maximum number of rows of items which the \fIlist-choices\fR editor
4118 command will list without asking first.
4119 .TP 8
4120 .B loginsh \fR(+)
4121 Set by the shell if it is a login shell.  Setting or unsetting it
4122 within a shell has no effect.  See also \fBshlvl\fR.
4123 .TP 8
4124 .B logout \fR(+)
4125 Set by the shell to `normal' before a normal logout, `automatic' before
4126 an automatic logout, and `hangup' if the shell was killed by a hangup
4127 signal (see \fBSignal handling\fR).  See also the \fBautologout\fR
4128 shell variable.
4129 .TP 8
4130 .B mail
4131 A list of files and directories to check for incoming mail, optionally
4132 preceded by a numeric word.  Before each prompt, if 10 minutes have
4133 passed since the last check, the shell checks each file and says `You
4134 have new mail.' (or, if \fBmail\fR contains multiple files, `You have
4135 new mail in \fIname\fR.') if the filesize is greater than zero in size
4136 and has a modification time greater than its access time.
4137 .PP
4138 .RS +8
4139 .PD
4140 .PP
4141 If you are in a login shell, then no mail file is reported unless it has
4142 been modified after the time the shell has started up, to prevent
4143 redundant notifications.  Most login programs will tell you whether or not
4144 you have mail when you log in.
4145 .PP
4146 If a file specified in \fBmail\fR is a directory, the shell will count each
4147 file within that directory as a separate message, and will report `You have
4148 \fIn\fR mails.' or `You have \fIn\fR mails in \fIname\fR.' as appropriate.
4149 This functionality is provided primarily for those systems which store mail
4150 in this manner, such as the Andrew Mail System.
4151 .PP
4152 If the first word of \fBmail\fR is numeric it is taken as a different mail
4153 checking interval, in seconds.
4154 .PP
4155 Under very rare circumstances, the shell may report `You have mail.' instead
4156 of `You have new mail.'
4157 .RE
4158 .TP 8
4159 .B matchbeep \fR(+)
4160 If set to `never', completion never beeps.
4161 If set to `nomatch', it beeps only when there is no match.
4162 If set to `ambiguous', it beeps when there are multiple matches.
4163 If set to `notunique', it beeps when there is one exact and other longer matches.
4164 If unset, `ambiguous' is used.
4165 .TP 8
4166 .B nobeep \fR(+)
4167 If set, beeping is completely disabled.
4168 See also \fBvisiblebell\fR.
4169 .TP 8
4170 .B noclobber
4171 If set, restrictions are placed on output redirection to insure that files
4172 are not accidentally destroyed and that `>>' redirections refer to existing
4173 files, as described in the \fBInput/output\fR section.
4174 .TP 8
4175 .B noding
4176 If set, disable the printing of `DING!' in the \fBprompt\fR time
4177 specifiers at the change of hour.
4178 .TP 8
4179 .B noglob
4180 If set, \fBFilename substitution\fR and \fBDirectory stack substitution\fR
4181 (q.v.) are inhibited.  This is most useful in shell scripts which do not deal
4182 with filenames, or after a list of filenames has been obtained and further
4183 expansions are not desirable.
4184 .TP 8
4185 .B nokanji \fR(+)
4186 If set and the shell supports Kanji (see the \fBversion\fR shell variable),
4187 it is disabled so that the meta key can be used.
4188 .TP 8
4189 .B nonomatch
4190 If set, a \fBFilename substitution\fR or \fBDirectory stack substitution\fR
4191 (q.v.) which does not match any
4192 existing files is left untouched rather than causing an error.
4193 It is still an error for the substitution to be
4194 malformed, e.g., `echo [' still gives an error.
4195 .TP 8
4196 .B nostat \fR(+)
4197 A list of directories (or glob-patterns which match directories; see
4198 \fBFilename substitution\fR) that should not be \fIstat\fR(2)ed during a
4199 completion operation.  This is usually used to exclude directories which
4200 take too much time to \fIstat\fR(2), for example \fI/afs\fR.
4201 .TP 8
4202 .B notify
4203 If set, the shell announces job completions asynchronously.
4204 The default is to present job completions just before printing a prompt.
4205 .TP 8
4206 .B oid \fR(+)
4207 The user's real organization ID.  (Domain/OS only)
4208 .TP 8
4209 .B owd \fR(+)
4210 The old working directory, equivalent to the `\-' used by \fIcd\fR and \fIpushd\fR.
4211 See also the \fBcwd\fR and \fBdirstack\fR shell variables.
4212 .TP 8
4213 .B padhour
4214 If set, enable the printing of padding '0' for hours, in 24 and 12 hour
4215 formats.  E.G.: 07:45:42 vs. 7:45:42.
4216 .TP 8
4217 .B parseoctal
4218 To retain compatibily with older versions numeric variables starting with
4219 0 are not interpreted as octal. Setting this variable enables proper octal
4220 parsing.
4221 .TP 8
4222 .B path
4223 A list of directories in which to look for executable commands.
4224 A null word specifies the current directory.
4225 If there is no \fBpath\fR variable then only full path names will execute.
4226 \fBpath\fR is set by the shell at startup from the \fBPATH\fR environment
4227 variable or, if \fBPATH\fR does not exist, to a system-dependent default
4228 something like `(/usr/local/bin /usr/bsd /bin /usr/bin .)'.
4229 The shell may put `.' first or last in \fBpath\fR or omit it entirely
4230 depending on how it was compiled; see the \fBversion\fR shell variable.
4231 A shell which is given neither the \fB\-c\fR nor the \fB\-t\fR option
4232 hashes the contents of the directories in \fBpath\fR after
4233 reading \fI~/.tcshrc\fR and each time \fBpath\fR is reset.
4234 If one adds a new command to a directory in \fBpath\fR while the shell
4235 is active, one may need to do a \fIrehash\fR for the shell to find it.
4236 .TP 8
4237 .B printexitvalue \fR(+)
4238 If set and an interactive program exits with a non-zero status, the shell
4239 prints `Exit \fBstatus\fR'.
4240 .TP 8
4241 .B prompt
4242 The string which is printed before reading each command from the terminal.
4243 \fBprompt\fR may include any of the following formatting sequences (+), which
4244 are replaced by the given information:
4245 .PP
4246 .RS +8
4247 .PD 0
4248 .TP 4
4249 %/
4250 The current working directory.
4251 .TP 4
4252 %~
4253 The current working directory, but with one's home directory
4254 represented by `~' and other users' home directories represented by
4255 `~user' as per \fBFilename substitution\fR.  `~user' substitution
4256 happens only if the shell has already used `~\fIuser\fR' in a pathname
4257 in the current session.
4258 .TP 4
4259 %c[[0]\fIn\fR], %.[[0]\fIn\fR]
4260 The trailing component of the current working directory, or \fIn\fR
4261 trailing components if a digit \fIn\fR is given.
4262 If \fIn\fR begins with `0', the number of skipped components precede
4263 the trailing component(s) in the format `/<\fIskipped\fR>trailing'.
4264 If the \fBellipsis\fR shell variable is set, skipped components
4265 are represented by an ellipsis so the whole becomes `...trailing'.
4266 `~' substitution is done as in `%~' above, but the `~' component
4267 is ignored when counting trailing components.
4268 .TP 4
4269 %C
4270 Like %c, but without `~' substitution.
4271 .TP 4
4272 %h, %!, !
4273 The current history event number.
4274 .TP 4
4275 %M
4276 The full hostname.
4277 .TP 4
4278 %m
4279 The hostname up to the first `.'.
4280 .TP 4
4281 %S (%s)
4282 Start (stop) standout mode.
4283 .TP 4
4284 %B (%b)
4285 Start (stop) boldfacing mode.
4286 .TP 4
4287 %U (%u)
4288 Start (stop) underline mode.
4289 .TP 4
4290 %t, %@
4291 The time of day in 12-hour AM/PM format.
4292 .TP 4
4293 %T
4294 Like `%t', but in 24-hour format (but see the \fBampm\fR shell variable).
4295 .TP 4
4296 %p
4297 The `precise' time of day in 12-hour AM/PM format, with seconds.
4298 .TP 4
4299 %P
4300 Like `%p', but in 24-hour format (but see the \fBampm\fR shell variable).
4301 .TP 4
4302 \e\fIc\fR
4303 \fIc\fR is parsed as in \fIbindkey\fR.
4304 .TP 4
4305 ^\fIc\fR
4306 \fIc\fR is parsed as in \fIbindkey\fR.
4307 .TP 4
4308 %%
4309 A single `%'.
4310 .TP 4
4311 %n
4312 The user name.
4313 .TP 4
4314 %N
4315 The effective user name.
4316 .TP 4
4317 %j
4318 The number of jobs.
4319 .TP 4
4320 %d
4321 The weekday in `Day' format.
4322 .TP 4
4323 %D
4324 The day in `dd' format.
4325 .TP 4
4326 %w
4327 The month in `Mon' format.
4328 .TP 4
4329 %W
4330 The month in `mm' format.
4331 .TP 4
4332 %y
4333 The year in `yy' format.
4334 .TP 4
4335 %Y
4336 The year in `yyyy' format.
4337 .TP 4
4338 %l
4339 The shell's tty.
4340 .TP 4
4341 %L
4342 Clears from the end of the prompt to end of the display or the end of the line.
4343 .TP 4
4344 %$
4345 Expands the shell or environment variable name immediately after the `$'.
4346 .TP 4
4347 %#
4348 `>' (or the first character of the \fBpromptchars\fR shell variable)
4349 for normal users, `#' (or the second character of \fBpromptchars\fR)
4350 for the superuser.
4351 .TP 4
4352 %{\fIstring\fR%}
4353 Includes \fIstring\fR as a literal escape sequence.
4354 It should be used only to change terminal attributes and
4355 should not move the cursor location.  This
4356 cannot be the last sequence in \fBprompt\fR.
4357 .TP 4
4358 %?
4359 The return code of the command executed just before the prompt.
4360 .TP 4
4361 %R
4362 In \fBprompt2\fR, the status of the parser.
4363 In \fBprompt3\fR, the corrected string.
4364 In \fBhistory\fR, the history string.
4365 .PD
4366 .PP
4367 `%B', `%S', `%U' and `%{\fIstring\fR%}' are available in only
4368 eight-bit-clean shells; see the \fBversion\fR shell variable.
4369 .PP
4370 The bold, standout and underline sequences are often used to distinguish a
4371 superuser shell.  For example,
4372 .IP "" 4
4373 > set prompt = "%m [%h] %B[%@]%b [%/] you rang? "
4374 .br
4375 tut [37] \fB[2:54pm]\fR [/usr/accts/sys] you rang? _
4376 .PP
4377 If `%t', `%@', `%T', `%p', or `%P' is used, and \fBnoding\fR is not set,
4378 then print `DING!' on the change of hour (i.e, `:00' minutes) instead of
4379 the actual time.
4380 .PP
4381 Set by default to `%# ' in interactive shells.
4382 .RE
4383 .TP 8
4384 .B prompt2 \fR(+)
4385 The string with which to prompt in \fIwhile\fR and \fIforeach\fR loops and
4386 after lines ending in `\e'.
4387 The same format sequences may be used as in \fBprompt\fR (q.v.);
4388 note the variable meaning of `%R'.
4389 Set by default to `%R? ' in interactive shells.
4390 .TP 8
4391 .B prompt3 \fR(+)
4392 The string with which to prompt when confirming automatic spelling correction.
4393 The same format sequences may be used as in \fBprompt\fR (q.v.);
4394 note the variable meaning of `%R'.
4395 Set by default to `CORRECT>%R (y|n|e|a)? ' in interactive shells.
4396 .TP 8
4397 .B promptchars \fR(+)
4398 If set (to a two-character string), the `%#' formatting sequence in the
4399 \fBprompt\fR shell variable is replaced with the first character for
4400 normal users and the second character for the superuser.
4401 .TP 8
4402 .B pushdtohome \fR(+)
4403 If set, \fIpushd\fR without arguments does `pushd ~', like \fIcd\fR.
4404 .TP 8
4405 .B pushdsilent \fR(+)
4406 If set, \fIpushd\fR and \fIpopd\fR do not print the directory stack.
4407 .TP 8
4408 .B recexact \fR(+)
4409 If set, completion completes on an exact match even if a longer match is
4410 possible.
4411 .TP 8
4412 .B recognize_only_executables \fR(+)
4413 If set, command listing displays only files in the path that are
4414 executable.  Slow.
4415 .TP 8
4416 .B rmstar \fR(+)
4417 If set, the user is prompted before `rm *' is executed.
4418 .TP 8
4419 .B rprompt \fR(+)
4420 The string to print on the right-hand side of the screen (after
4421 the command input) when the prompt is being displayed on the left.
4422 It recognizes the same formatting characters as \fBprompt\fR.
4423 It will automatically disappear and reappear as necessary, to ensure that
4424 command input isn't obscured, and will appear only if the prompt,
4425 command input, and itself will fit together on the first line.
4426 If \fBedit\fR isn't set, then \fBrprompt\fR will be printed after
4427 the prompt and before the command input.
4428 .TP 8
4429 .B savedirs \fR(+)
4430 If set, the shell does `dirs \-S' before exiting.
4431 If the first word is set to a number, at most that many directory stack
4432 entries are saved.
4433 .TP 8
4434 .B savehist
4435 If set, the shell does `history \-S' before exiting.
4436 If the first word is set to a number, at most that many lines are saved.
4437 (The number should be less than or equal to the number \fBhistory\fR entries;
4438 if it is set to greater than the number of \fBhistory\fR settings, only
4439 \fBhistory\fR entries will be saved)
4440 If the second word is set to `merge', the history list is merged with
4441 the existing history file instead of replacing it (if there is one) and
4442 sorted by time stamp and the most recent events are retained.
4443 If the second word of \fBsavehist\fR is `merge' and the third word is set to
4444 `lock', the history file update will be serialized with other shell sessions
4445 that would possibly like to merge history at exactly the same time. (+)
4446 .TP 8
4447 .B sched \fR(+)
4448 The format in which the \fIsched\fR builtin command prints scheduled events;
4449 if not given, `%h\et%T\et%R\en' is used.
4450 The format sequences are described above under \fBprompt\fR;
4451 note the variable meaning of `%R'.
4452 .TP 8
4453 .B shell
4454 The file in which the shell resides.  This is used in forking
4455 shells to interpret files which have execute bits set, but
4456 which are not executable by the system.  (See the description
4457 of \fBBuiltin and non-builtin command execution\fR.)  Initialized to the
4458 (system-dependent) home of the shell.
4459 .TP 8
4460 .B shlvl \fR(+)
4461 The number of nested shells.
4462 Reset to 1 in login shells.
4463 See also \fBloginsh\fR.
4464 .TP 8
4465 .B status
4466 The exit status from the last command or backquote expansion, or any
4467 command in a pipeline is propagated to \fBstatus\fR.  (This is also the
4468 default \fBcsh\fR behavior.)
4469 This default does not match what POSIX mandates (to return the
4470 status of the last command only). To match the POSIX behavior, you need
4471 to unset \fBanyerror\fR.
4472 .RS +8
4473 .PP
4474 If the \fBanyerror\fR variable is unset, the exit status of a pipeline
4475 is determined only from the last command in the pipeline, and the exit
4476 status of a backquote expansion is \fInot\fR propagated to \fBstatus\fR.
4477 .PP
4478 If a command terminated abnormally, then 0200 is added to the status.
4479 Builtin commands which fail return exit status `1', all other builtin
4480 commands return status `0'.
4481 .RE
4482 .TP 8
4483 .B symlinks \fR(+)
4484 Can be set to several different values to control symbolic link (`symlink')
4485 resolution:
4486 .RS +8
4487 .PP
4488 If set to `chase', whenever the current directory changes to a directory
4489 containing a symbolic link, it is expanded to the real name of the directory
4490 to which the link points.  This does not work for the user's home directory;
4491 this is a bug.
4492 .PP
4493 If set to `ignore', the shell tries to construct a current directory
4494 relative to the current directory before the link was crossed.
4495 This means that \fIcd\fRing through a symbolic link and then `cd ..'ing
4496 returns one to the original directory.  This affects only builtin commands
4497 and filename completion.
4498 .PP
4499 If set to `expand', the shell tries to fix symbolic links by actually expanding
4500 arguments which look like path names.  This affects any command, not just
4501 builtins.  Unfortunately, this does not work for hard-to-recognize filenames,
4502 such as those embedded in command options.  Expansion may be prevented by
4503 quoting.  While this setting is usually the most convenient, it is sometimes
4504 misleading and sometimes confusing when it fails to recognize an argument
4505 which should be expanded.  A compromise is to use `ignore' and use the
4506 editor command \fInormalize-path\fR (bound by default to ^X-n) when necessary.
4507 .PP
4508 Some examples are in order.  First, let's set up some play directories:
4509 .IP "" 4
4510 > cd /tmp
4511 .br
4512 > mkdir from from/src to
4513 .br
4514 > ln \-s from/src to/dst
4515 .PP
4516 Here's the behavior with \fBsymlinks\fR unset,
4517 .IP "" 4
4518 > cd /tmp/to/dst; echo $cwd
4519 .br
4520 /tmp/to/dst
4521 .br
4522 > cd ..; echo $cwd
4523 .br
4524 /tmp/from
4525 .PP
4526 here's the behavior with \fBsymlinks\fR set to `chase',
4527 .IP "" 4
4528 > cd /tmp/to/dst; echo $cwd
4529 .br
4530 /tmp/from/src
4531 .br
4532 > cd ..; echo $cwd
4533 .br
4534 /tmp/from
4535 .PP
4536 here's the behavior with \fBsymlinks\fR set to `ignore',
4537 .IP "" 4
4538 > cd /tmp/to/dst; echo $cwd
4539 .br
4540 /tmp/to/dst
4541 .br
4542 > cd ..; echo $cwd
4543 .br
4544 /tmp/to
4545 .PP
4546 and here's the behavior with \fBsymlinks\fR set to `expand'.
4547 .IP "" 4
4548 > cd /tmp/to/dst; echo $cwd
4549 .br
4550 /tmp/to/dst
4551 .br
4552 > cd ..; echo $cwd
4553 .br
4554 /tmp/to
4555 .br
4556 > cd /tmp/to/dst; echo $cwd
4557 .br
4558 /tmp/to/dst
4559 .br
4560 > cd ".."; echo $cwd
4561 .br
4562 /tmp/from
4563 .br
4564 > /bin/echo ..
4565 .br
4566 /tmp/to
4567 .br
4568 > /bin/echo ".."
4569 .br
4570 \&..
4571 .PP
4572 Note that `expand' expansion 1) works just like `ignore' for builtins
4573 like \fIcd\fR, 2) is prevented by quoting, and 3) happens before
4574 filenames are passed to non-builtin commands.
4575 .RE
4576 .TP 8
4577 .B tcsh \fR(+)
4578 The version number of the shell in the format `R.VV.PP',
4579 where `R' is the major release number, `VV' the current version
4580 and `PP' the patchlevel.
4581 .TP 8
4582 .B term
4583 The terminal type.  Usually set in \fI~/.login\fR as described under
4584 \fBStartup and shutdown\fR.
4585 .TP 8
4586 .B time
4587 If set to a number, then the \fItime\fR builtin (q.v.) executes automatically
4588 after each command which takes more than that many CPU seconds.
4589 If there is a second word, it is used as a format string for the output
4590 of the \fItime\fR builtin.  (u) The following sequences may be used in the
4591 format string:
4592 .PP
4593 .RS +8
4594 .PD 0
4595 .TP 4
4596 %U
4597 The time the process spent in user mode in cpu seconds.
4598 .TP 4
4599 %S
4600 The time the process spent in kernel mode in cpu seconds.
4601 .TP 4
4602 %E
4603 The elapsed (wall clock) time in seconds.
4604 .TP 4
4605 %P
4606 The CPU percentage computed as (%U + %S) / %E.
4607 .TP 4
4608 %W
4609 Number of times the process was swapped.
4610 .TP 4
4611 %X
4612 The average amount in (shared) text space used in Kbytes.
4613 .TP 4
4614 %D
4615 The average amount in (unshared) data/stack space used in Kbytes.
4616 .TP 4
4617 %K
4618 The total space used (%X + %D) in Kbytes.
4619 .TP 4
4620 %M
4621 The maximum memory the process had in use at any time in Kbytes.
4622 .TP 4
4623 %F
4624 The number of major page faults (page needed to be brought from disk).
4625 .TP 4
4626 %R
4627 The number of minor page faults.
4628 .TP 4
4629 %I
4630 The number of input operations.
4631 .TP 4
4632 %O
4633 The number of output operations.
4634 .TP 4
4635 %r
4636 The number of socket messages received.
4637 .TP 4
4638 %s
4639 The number of socket messages sent.
4640 .TP 4
4641 %k
4642 The number of signals received.
4643 .TP 4
4644 %w
4645 The number of voluntary context switches (waits).
4646 .TP 4
4647 %c
4648 The number of involuntary context switches.
4649 .PD
4650 .PP
4651 Only the first four sequences are supported on systems without BSD resource
4652 limit functions.
4653 The default time format is `%Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww' for
4654 systems that support resource usage reporting and `%Uu %Ss %E %P' for
4655 systems that do not.
4656 .PP
4657 Under Sequent's DYNIX/ptx, %X, %D, %K, %r and %s are not
4658 available, but the following additional sequences are:
4659 .PP
4660 .PD 0
4661 .TP 4
4662 %Y
4663 The number of system calls performed.
4664 .TP 4
4665 %Z
4666 The number of pages which are zero-filled on demand.
4667 .TP 4
4668 %i
4669 The number of times a process's resident set size was increased by the kernel.
4670 .TP 4
4671 %d
4672 The number of times a process's resident set size was decreased by the kernel.
4673 .TP 4
4674 %l
4675 The number of read system calls performed.
4676 .TP 4
4677 %m
4678 The number of write system calls performed.
4679 .TP 4
4680 %p
4681 The number of reads from raw disk devices.
4682 .TP 4
4683 %q
4684 The number of writes to raw disk devices.
4685 .PD
4686 .PP
4687 and the default time format is `%Uu %Ss %E %P %I+%Oio %Fpf+%Ww'.
4688 Note that the CPU percentage can be higher than 100% on multi-processors.
4689 .RE
4690 .TP 8
4691 .B tperiod \fR(+)
4692 The period, in minutes, between executions of the \fIperiodic\fR special alias.
4693 .TP 8
4694 .B tty \fR(+)
4695 The name of the tty, or empty if not attached to one.
4696 .TP 8
4697 .B uid \fR(+)
4698 The user's real user ID.
4699 .TP 8
4700 .B user
4701 The user's login name.
4702 .TP 8
4703 .B verbose
4704 If set, causes the words of each
4705 command to be printed, after history substitution (if any).
4706 Set by the \fB\-v\fR command line option.
4707 .TP 8
4708 .B version \fR(+)
4709 The version ID stamp.  It contains the shell's version number (see \fBtcsh\fR),
4710 origin, release date, vendor, operating system and machine (see \fBVENDOR\fR,
4711 \fBOSTYPE\fR and \fBMACHTYPE\fR) and a comma-separated
4712 list of options which were set at compile time.
4713 Options which are set by default in the distribution are noted.
4714 .PP
4715 .RS +8
4716 .PD 0
4717 .TP 6
4718 8b
4719 The shell is eight bit clean; default
4720 .TP 6
4721 7b
4722 The shell is not eight bit clean
4723 .TP 6
4724 wide
4725 The shell is multibyte encoding clean (like UTF-8)
4726 .TP 6
4727 nls
4728 The system's NLS is used; default for systems with NLS
4729 .TP 6
4730 lf
4731 Login shells execute \fI/etc/csh.login\fR before instead of after
4732 \fI/etc/csh.cshrc\fR and \fI~/.login\fR before instead of after
4733 \fI~/.tcshrc\fR and \fI~/.history\fR.
4734 .TP 6
4735 dl
4736 `.' is put last in \fBpath\fR for security; default
4737 .TP 6
4738 nd
4739 `.' is omitted from \fBpath\fR for security
4740 .TP 6
4741 vi
4742 \fIvi\fR(1)\-style editing is the default rather than \fIemacs\fR(1)\-style
4743 .TP 6
4744 dtr
4745 Login shells drop DTR when exiting
4746 .TP 6
4747 bye
4748 \fIbye\fR is a synonym for \fIlogout\fR and \fIlog\fR
4749 is an alternate name for \fIwatchlog\fR
4750 .TP 6
4751 al
4752 \fBautologout\fR is enabled; default
4753 .TP 6
4754 kan
4755 Kanji is used if appropriate according to locale settings,
4756 unless the \fBnokanji\fR shell variable is set
4757 .TP 6
4758 sm
4759 The system's \fImalloc\fR(3) is used
4760 .TP 6
4761 hb
4762 The `#!<program> <args>' convention is emulated when executing shell scripts
4763 .TP 6
4764 ng
4765 The \fInewgrp\fR builtin is available
4766 .TP 6
4767 rh
4768 The shell attempts to set the \fBREMOTEHOST\fR environment variable
4769 .TP 6
4770 afs
4771 The shell verifies your password with the kerberos server if local
4772 authentication fails.  The \fBafsuser\fR shell variable or the
4773 \fBAFSUSER\fR environment variable override your local username if set.
4774 .PD
4775 .PP
4776 An administrator may enter additional strings to indicate differences
4777 in the local version.
4778 .RE
4779 .TP 8
4780 .B vimode \fR(+)
4781 .RS +8
4782 If unset, various key bindings change behavior to be more \fBemacs\fR(1)\-style:
4783 word boundaries are determined by \fBwordchars\fR versus other characters.
4784 .PP
4785 If set, various key bindings change behavior to be more \fBvi\fR(1)\-style:
4786 word boundaries are determined by \fBwordchars\fR versus whitespace
4787 versus other characters;
4788 cursor behavior depends upon current vi mode (command, delete, insert, replace).
4789 .PP
4790 This variable is unset by \fIbindkey\fR \fB-e\fR and
4791 set by \fIbindkey\fR \fB-v\fR.
4792 .B vimode
4793 may be explicitly set or unset by the user after those \fIbindkey\fR
4794 operations if required.
4795 .RE
4796 .TP 8
4797 .B visiblebell \fR(+)
4798 If set, a screen flash is used rather than the audible bell.
4799 See also \fBnobeep\fR.
4800 .TP 8
4801 .B watch \fR(+)
4802 A list of user/terminal pairs to watch for logins and logouts.
4803 If either the user is `any' all terminals are watched for the given user
4804 and vice versa.
4805 Setting \fBwatch\fR to `(any any)' watches all users and terminals.
4806 For example,
4807 .RS +8
4808 .IP "" 4
4809 set watch = (george ttyd1 any console $user any)
4810 .PP
4811 reports activity of the user `george' on ttyd1, any user on the console, and
4812 oneself (or a trespasser) on any terminal.
4813 .PP
4814 Logins and logouts are checked every 10 minutes by default, but the first
4815 word of \fBwatch\fR can be set to a number to check every so many minutes.
4816 For example,
4817 .IP "" 4
4818 set watch = (1 any any)
4819 .PP
4820 reports any login/logout once every minute.  For the impatient, the \fIlog\fR
4821 builtin command triggers a \fBwatch\fR report at any time.  All current logins
4822 are reported (as with the \fIlog\fR builtin) when \fBwatch\fR is first set.
4823 .PP
4824 The \fBwho\fR shell variable controls the format of \fBwatch\fR reports.
4825 .RE
4826 .TP 8
4827 .B who \fR(+)
4828 The format string for \fBwatch\fR messages.  The following sequences
4829 are replaced by the given information:
4830 .PP
4831 .RS +8
4832 .PD 0
4833 .TP 4
4834 %n
4835 The name of the user who logged in/out.
4836 .TP 4
4837 %a
4838 The observed action, i.e., `logged on', `logged off' or `replaced \fIolduser\fR on'.
4839 .TP 4
4840 %l
4841 The terminal (tty) on which the user logged in/out.
4842 .TP 4
4843 %M
4844 The full hostname of the remote host, or `local' if the login/logout was
4845 from the local host.
4846 .TP 4
4847 %m
4848 The hostname of the remote host up to the first `.'.
4849 The full name is printed if it is an IP address or an X Window System display.
4850 .PD
4851 .PP
4852 %M and %m are available on only systems that store the remote hostname in
4853 \fI/etc/utmp\fR.
4854 If unset, `%n has %a %l from %m.' is used, or `%n has %a %l.' on systems
4855 which don't store the remote hostname.
4856 .RE
4857 .TP 8
4858 .B wordchars \fR(+)
4859 A list of non-alphanumeric characters to be considered part of a word by the
4860 \fIforward-word\fR, \fIbackward-word\fR etc., editor commands.
4861 If unset, the default value is determined based on the state of \fBvimode\fR:
4862 if \fBvimode\fR is unset, `*?_\-.[]~=' is used as the default;
4863 if \fBvimode\fR is set, `_' is used as the default.
4864 .SH ENVIRONMENT
4865 .TP 8
4866 .B AFSUSER \fR(+)
4867 Equivalent to the \fBafsuser\fR shell variable.
4868 .TP 8
4869 .B COLUMNS
4870 The number of columns in the terminal.  See \fBTerminal management\fR.
4871 .TP 8
4872 .B DISPLAY
4873 Used by X Window System (see \fIX\fR(1)).
4874 If set, the shell does not set \fBautologout\fR (q.v.).
4875 .TP 8
4876 .B EDITOR
4877 The pathname to a default editor.
4878 Used by the \fIrun-fg-editor\fR editor command if the
4879 the \fBeditors\fR shell variable is unset.
4880 See also the \fBVISUAL\fR environment variable.
4881 .TP 8
4882 .B GROUP \fR(+)
4883 Equivalent to the \fBgroup\fR shell variable.
4884 .TP 8
4885 .B HOME
4886 Equivalent to the \fBhome\fR shell variable.
4887 .TP 8
4888 .B HOST \fR(+)
4889 Initialized to the name of the machine on which the shell
4890 is running, as determined by the \fIgethostname\fR(2) system call.
4891 .TP 8
4892 .B HOSTTYPE \fR(+)
4893 Initialized to the type of machine on which the shell
4894 is running, as determined at compile time.  This variable is obsolete and
4895 will be removed in a future version.
4896 .TP 8
4897 .B HPATH \fR(+)
4898 A colon-separated list of directories in which the \fIrun-help\fR editor
4899 command looks for command documentation.
4900 .TP 8
4901 .B LANG
4902 Gives the preferred character environment.
4903 See \fBNative Language System support\fR.
4904 .TP 8
4905 .B LC_CTYPE
4906 If set, only ctype character handling is changed.
4907 See \fBNative Language System support\fR.
4908 .TP 8
4909 .B LINES
4910 The number of lines in the terminal.  See \fBTerminal management\fR.
4911 .TP 8
4912 .B LS_COLORS
4913 The format of this variable is reminiscent of the \fBtermcap(5)\fR
4914 file format; a colon-separated list of expressions of the form
4915 "\fIxx=string\fR", where "\fIxx\fR" is a two-character variable name.  The
4916 variables with their associated defaults are:
4917 .PP
4918 .RS +8
4919 .RS +4
4920 .PD 0
4921 .TP 12
4922 no      0
4923 Normal (non-filename) text
4924 .TP 12
4925 fi      0
4926 Regular file
4927 .TP 12
4928 di      01;34
4929 Directory
4930 .TP 12
4931 ln      01;36
4932 Symbolic link
4933 .TP 12
4934 pi      33
4935 Named pipe (FIFO)
4936 .TP 12
4937 so      01;35
4938 Socket
4939 .TP 12
4940 do      01;35
4941 Door
4942 .TP 12
4943 bd      01;33
4944 Block device
4945 .TP 12
4946 cd      01;32
4947 Character device
4948 .TP 12
4949 ex      01;32
4950 Executable file
4951 .TP 12
4952 mi      (none)
4953 Missing file (defaults to fi)
4954 .TP 12
4955 or      (none)
4956 Orphaned symbolic link (defaults to ln)
4957 .TP 12
4958 lc      ^[[
4959 Left code
4960 .TP 12
4961 rc      m
4962 Right code
4963 .TP 12
4964 ec      (none)
4965 End code (replaces lc+no+rc)
4966 .PD
4967 .RE
4968 .PP
4969 You need to include only the variables you want to change from
4970 the default.
4971 .PP
4972 File names can also be colorized based on filename extension.
4973 This is specified in the \fBLS_COLORS\fR variable using the syntax
4974 \fB"*ext=string"\fR.  For example, using ISO 6429 codes, to color
4975 all C\-language source files blue you would specify \fB"*.c=34"\fR.
4976 This would color all files ending in \fB.c\fR in blue (34) color.
4977 .PP
4978 Control characters can be written either in C\-style\-escaped
4979 notation, or in stty\-like ^\-notation.  The C\-style notation
4980 adds \fB^[\fR for Escape, \fB\_\fR for a normal space character,
4981 and \fB?\fR for Delete.  In addition, the \fB^[\fR escape character
4982 can be used to override the default interpretation of \fB^[\fR,
4983 \fB^\fR, \fB:\fR and \fB=\fR.
4984 .PP
4985 Each file will be written as \fB<lc>\fR \fB<color-code>\fR
4986 \fB<rc>\fR \fB<filename>\fR \fB<ec>\fR.  If the \fB<ec>\fR
4987 code is undefined, the sequence \fB<lc>\fR \fB<no>
4988 \fB<rc>\fR will be used instead.  This is generally more convenient
4989 to use, but less general.  The left, right and end codes are
4990 provided so you don't have to type common parts over and over
4991 again and to support weird terminals; you will generally not
4992 need to change them at all unless your terminal does not use
4993 ISO 6429 color sequences but a different system.
4994 .PP
4995 If your terminal does use ISO 6429 color codes, you can
4996 compose the type codes (i.e., all except the \fBlc\fR, \fBrc\fR,
4997 and \fBec\fR codes) from numerical commands separated by semicolons.  The
4998 most common commands are:
4999 .PP
5000 .RS +8
5001 .PD 0
5002 .TP 4
5003 0
5004 to restore default color
5005 .TP 4
5006 1
5007 for brighter colors
5008 .TP 4
5009 4
5010 for underlined text
5011 .TP 4
5012 5
5013 for flashing text
5014 .TP 4
5015 30
5016 for black foreground
5017 .TP 4
5018 31
5019 for red foreground
5020 .TP 4
5021 32
5022 for green foreground
5023 .TP 4
5024 33
5025 for yellow (or brown) foreground
5026 .TP 4
5027 34
5028 for blue foreground
5029 .TP 4
5030 35
5031 for purple foreground
5032 .TP 4
5033 36
5034 for cyan foreground
5035 .TP 4
5036 37
5037 for white (or gray) foreground
5038 .TP 4
5039 40
5040 for black background
5041 .TP 4
5042 41
5043 for red background
5044 .TP 4
5045 42
5046 for green background
5047 .TP 4
5048 43
5049 for yellow (or brown) background
5050 .TP 4
5051 44
5052 for blue background
5053 .TP 4
5054 45
5055 for purple background
5056 .TP 4
5057 46
5058 for cyan background
5059 .TP 4
5060 47
5061 for white (or gray) background
5062 .PD
5063 .RE
5064 .PP
5065 Not all commands will work on all systems or display devices.
5066 .PP
5067 A few terminal programs do not recognize the default end code
5068 properly.  If all text gets colorized after you do a directory
5069 listing, try changing the \fBno\fR and \fBfi\fR codes from 0 to the
5070 numerical codes for your standard fore- and background colors.
5071 .RE
5072 .TP 8
5073 .B MACHTYPE \fR(+)
5074 The machine type (microprocessor class or machine model), as determined at compile time.
5075 .TP 8
5076 .B NOREBIND \fR(+)
5077 If set, printable characters are not rebound to \fIself-insert-command\fR.
5078 See \fBNative Language System support\fR.
5079 .TP 8
5080 .B OSTYPE \fR(+)
5081 The operating system, as determined at compile time.
5082 .TP 8
5083 .B PATH
5084 A colon-separated list of directories in which to look for executables.
5085 Equivalent to the \fBpath\fR shell variable, but in a different format.
5086 .TP 8
5087 .B PWD \fR(+)
5088 Equivalent to the \fBcwd\fR shell variable, but not synchronized to it;
5089 updated only after an actual directory change.
5090 .TP 8
5091 .B REMOTEHOST \fR(+)
5092 The host from which the user has logged in remotely, if this is the case and
5093 the shell is able to determine it.  Set only if the shell was so compiled;
5094 see the \fBversion\fR shell variable.
5095 .TP 8
5096 .B SHLVL \fR(+)
5097 Equivalent to the \fBshlvl\fR shell variable.
5098 .TP 8
5099 .B SYSTYPE \fR(+)
5100 The current system type.  (Domain/OS only)
5101 .TP 8
5102 .B TERM
5103 Equivalent to the \fBterm\fR shell variable.
5104 .TP 8
5105 .B TERMCAP
5106 The terminal capability string.  See \fBTerminal management\fR.
5107 .TP 8
5108 .B USER
5109 Equivalent to the \fBuser\fR shell variable.
5110 .TP 8
5111 .B VENDOR \fR(+)
5112 The vendor, as determined at compile time.
5113 .TP 8
5114 .B VISUAL
5115 The pathname to a default full-screen editor.
5116 Used by the \fIrun-fg-editor\fR editor command if the
5117 the \fBeditors\fR shell variable is unset.
5118 See also the \fBEDITOR\fR environment variable.
5119 .SH FILES
5120 .PD 0
5121 .TP 16
5122 .I /etc/csh.cshrc
5123 Read first by every shell.
5124 ConvexOS, Stellix and Intel use \fI/etc/cshrc\fR and
5125 NeXTs use \fI/etc/cshrc.std\fR.
5126 A/UX, AMIX, Cray and IRIX have no equivalent in \fIcsh\fR(1),
5127 but read this file in \fItcsh\fR anyway.
5128 Solaris 2.x does not have it either, but \fItcsh\fR reads \fI/etc/.cshrc\fR.  (+)
5129 .TP 16
5130 .I /etc/csh.login
5131 Read by login shells after \fI/etc/csh.cshrc\fR.
5132 ConvexOS, Stellix and Intel use \fI/etc/login\fR,
5133 NeXTs use \fI/etc/login.std\fR, Solaris 2.x uses \fI/etc/.login\fR and
5134 A/UX, AMIX, Cray and IRIX use \fI/etc/cshrc\fR.
5135 .TP 16
5136 .I ~/.tcshrc \fR(+)
5137 Read by every shell after \fI/etc/csh.cshrc\fR or its equivalent.
5138 .TP 16
5139 .I ~/.cshrc
5140 Read by every shell, if \fI~/.tcshrc\fR doesn't exist,
5141 after \fI/etc/csh.cshrc\fR or its equivalent.
5142 This manual uses `\fI~/.tcshrc\fR' to mean `\fI~/.tcshrc\fR or,
5143 if \fI~/.tcshrc\fR is not found, \fI~/.cshrc\fR'.
5144 .TP 16
5145 .I ~/.history
5146 Read by login shells after \fI~/.tcshrc\fR
5147 if \fBsavehist\fR is set, but see also \fBhistfile\fR.
5148 .TP 16
5149 .I ~/.login
5150 Read by login shells after \fI~/.tcshrc\fR or \fI~/.history\fR.
5151 The shell may be compiled to read \fI~/.login\fR before instead of after
5152 \fI~/.tcshrc\fR and \fI~/.history\fR; see the \fBversion\fR shell variable.
5153 .TP 16
5154 .I ~/.cshdirs \fR(+)
5155 Read by login shells after \fI~/.login\fR
5156 if \fBsavedirs\fR is set, but see also \fBdirsfile\fR.
5157 .TP 16
5158 .I /etc/csh.logout
5159 Read by login shells at logout.
5160 ConvexOS, Stellix and Intel use \fI/etc/logout\fR and
5161 NeXTs use \fI/etc/logout.std\fR.
5162 A/UX, AMIX, Cray and IRIX have no equivalent in \fIcsh\fR(1),
5163 but read this file in \fItcsh\fR anyway.
5164 Solaris 2.x does not have it either, but \fItcsh\fR reads \fI/etc/.logout\fR.  (+)
5165 .TP 16
5166 .I ~/.logout
5167 Read by login shells at logout after \fI/etc/csh.logout\fR or its equivalent.
5168 .TP 16
5169 .I /bin/sh
5170 Used to interpret shell scripts not starting with a `#'.
5171 .TP 16
5172 .I /tmp/sh*
5173 Temporary file for `<<'.
5174 .TP 16
5175 .I /etc/passwd
5176 Source of home directories for `~name' substitutions.
5177 .PD
5178 .PP
5179 The order in which startup files are read may differ if the shell was so
5180 compiled; see \fBStartup and shutdown\fR and the \fBversion\fR shell variable.
5181 .SH "NEW FEATURES (+)"
5182 This manual describes \fItcsh\fR as a single entity,
5183 but experienced \fIcsh\fR(1) users will want to pay special attention to
5184 \fItcsh\fR's new features.
5185 .PP
5186 A command-line editor, which supports \fIemacs\fR(1)\-style
5187 or \fIvi\fR(1)\-style key bindings.
5188 See \fBThe command-line editor\fR and \fBEditor commands\fR.
5189 .PP
5190 Programmable, interactive word completion and listing.
5191 See \fBCompletion and listing\fR and the \fIcomplete\fR and \fIuncomplete\fR
5192 builtin commands.
5193 .PP
5194 \fBSpelling correction\fR (q.v.) of filenames, commands and variables.
5195 .PP
5196 \fBEditor commands\fR (q.v.) which perform other useful functions in the middle of
5197 typed commands, including documentation lookup (\fIrun-help\fR),
5198 quick editor restarting (\fIrun-fg-editor\fR) and
5199 command resolution (\fIwhich-command\fR).
5200 .PP
5201 An enhanced history mechanism.  Events in the history list are time-stamped.
5202 See also the \fIhistory\fR command and its associated shell variables,
5203 the previously undocumented `#' event specifier and new modifiers
5204 under \fBHistory substitution\fR,
5205 the \fI*-history\fR, \fIhistory-search-*\fR, \fIi-search-*\fR, \fIvi-search-*\fR and
5206 \fItoggle-literal-history\fR editor commands
5207 and the \fBhistlit\fR shell variable.
5208 .PP
5209 Enhanced directory parsing and directory stack handling.
5210 See the \fIcd\fR, \fIpushd\fR, \fIpopd\fR and \fIdirs\fR commands and their associated
5211 shell variables, the description of \fBDirectory stack substitution\fR,
5212 the \fBdirstack\fR, \fBowd\fR and \fBsymlinks\fR shell variables and
5213 the \fInormalize-command\fR and \fInormalize-path\fR editor commands.
5214 .PP
5215 Negation in glob-patterns.  See \fBFilename substitution\fR.
5216 .PP
5217 New \fBFile inquiry operators\fR (q.v.) and a \fIfiletest\fR
5218 builtin which uses them.
5219 .PP
5220 A variety of \fBAutomatic, periodic and timed events\fR (q.v.) including
5221 scheduled events, special aliases, automatic logout and terminal locking,
5222 command timing and watching for logins and logouts.
5223 .PP
5224 Support for the Native Language System
5225 (see \fBNative Language System support\fR),
5226 OS variant features
5227 (see \fBOS variant support\fR and the \fBecho_style\fR shell variable)
5228 and system-dependent file locations (see \fBFILES\fR).
5229 .PP
5230 Extensive terminal-management capabilities.  See \fBTerminal management\fR.
5231 .PP
5232 New builtin commands including \fIbuiltins\fR, \fIhup\fR, \fIls\-F\fR,
5233 \fInewgrp\fR, \fIprintenv\fR, \fIwhich\fR and \fIwhere\fR (q.v.).
5234 .PP
5235 New variables that make useful information easily available to the shell.
5236 See the \fBgid\fR, \fBloginsh\fR, \fBoid\fR, \fBshlvl\fR, \fBtcsh\fR,
5237 \fBtty\fR, \fBuid\fR and \fBversion\fR shell variables and the \fBHOST\fR,
5238 \fBREMOTEHOST\fR, \fBVENDOR\fR, \fBOSTYPE\fR and \fBMACHTYPE\fR environment
5239 variables.
5240 .PP
5241 A new syntax for including useful information in the prompt string
5242 (see \fBprompt\fR),
5243 and special prompts for loops and spelling correction
5244 (see \fBprompt2\fR and \fBprompt3\fR).
5245 .PP
5246 Read-only variables.  See \fBVariable substitution\fR.
5247 .SH BUGS
5248 When a suspended command is restarted, the shell prints the directory
5249 it started in if this is different from the current directory.  This can
5250 be misleading (i.e., wrong) as the job may have changed directories internally.
5251 .PP
5252 Shell builtin functions are not stoppable/restartable.  Command sequences
5253 of the form `a ; b ; c' are also not handled gracefully when stopping is
5254 attempted.  If you suspend `b', the shell will then immediately execute
5255 `c'.  This is especially noticeable if this expansion results from an
5256 \fIalias\fR.  It suffices to place the sequence of commands in ()'s to force it
5257 to a subshell, i.e., `( a ; b ; c )'.
5258 .PP
5259 Control over tty output after processes are started is primitive; perhaps
5260 this will inspire someone to work on a good virtual terminal interface.
5261 In a virtual terminal interface much more interesting things could be
5262 done with output control.
5263 .PP
5264 Alias substitution is most often used to clumsily simulate shell procedures;
5265 shell procedures should be provided rather than aliases.
5266 .PP
5267 Control structures should be parsed rather than being recognized as
5268 built-in commands.  This would allow control commands to be placed anywhere,
5269 to be combined with `|', and to be used with `&' and `;' metasyntax.
5270 .PP
5271 \fIforeach\fR doesn't ignore here documents when looking for its \fIend\fR.
5272 .PP
5273 It should be possible to use the `:' modifiers on the output of command
5274 substitutions.
5275 .PP
5276 The screen update for lines longer than the screen width is very poor
5277 if the terminal cannot move the cursor up (i.e., terminal type `dumb').
5278 .PP
5279 \fBHPATH\fR and \fBNOREBIND\fR don't need to be environment variables.
5280 .PP
5281 Glob-patterns which do not use `?', `*' or `[]' or which use `{}' or `~'
5282 are not negated correctly.
5283 .PP
5284 The single-command form of \fIif\fR does output redirection even if
5285 the expression is false and the command is not executed.
5286 .PP
5287 \fIls\-F\fR includes file identification characters when sorting filenames
5288 and does not handle control characters in filenames well.  It cannot be
5289 interrupted.
5290 .PP
5291 Command substitution supports multiple commands and conditions, but not
5292 cycles or backward \fIgoto\fRs.
5293 .PP
5294 Report bugs at https://bugs.astron.com/, preferably with fixes.  If you want to
5295 help maintain and test tcsh, add yourself to the mailing list in
5296 https://mailman.astron.com/.
5297 .SH THE T IN TCSH
5298 In 1964, DEC produced the PDP-6.  The PDP-10 was a later re-implementation.  It
5299 was re-christened the DECsystem-10 in 1970 or so when DEC brought out the
5300 second model, the KI10.
5301 .PP
5302 TENEX was created at Bolt, Beranek & Newman (a Cambridge, Massachusetts
5303 think tank) in
5304 1972 as an experiment in demand-paged virtual memory operating systems.  They
5305 built a new pager for the DEC PDP-10 and created the OS to go with it.  It was
5306 extremely successful in academia.
5307 .PP
5308 In 1975, DEC brought out a new model of the PDP-10, the KL10; they intended to
5309 have only a version of TENEX, which they had licensed from BBN, for the new
5310 box.  They called their version TOPS-20 (their capitalization is trademarked).
5311 A lot of TOPS-10 users (`The OPerating System for PDP-10') objected; thus DEC
5312 found themselves supporting two incompatible systems on the same hardware--but
5313 then there were 6 on the PDP-11!
5314 .PP
5315 TENEX, and TOPS-20 to version 3, had command completion
5316 via a user-code-level subroutine library called ULTCMD.  With version 3, DEC
5317 moved all that capability and more into the monitor (`kernel' for you Unix
5318 types), accessed by the COMND% JSYS (`Jump to SYStem' instruction, the
5319 supervisor call mechanism [are my IBM roots also showing?]).
5320 .PP
5321 The creator of tcsh was impressed by this feature and several others of TENEX
5322 and TOPS-20, and created a version of csh which mimicked them.
5323 .SH LIMITATIONS
5324 The system limits argument lists to ARG_MAX characters.
5325 .PP
5326 The number of arguments to a command which involves filename expansion is
5327 limited to 1/6th the number of characters allowed in an argument list.
5328 .PP
5329 Command substitutions may substitute no more characters than are allowed in
5330 an argument list.
5331 .PP
5332 To detect looping, the shell restricts the number of \fIalias\fR
5333 substitutions on a single line to 20.
5334 .SH "SEE ALSO"
5335 csh(1), emacs(1), ls(1), newgrp(1), sh(1), setpath(1), stty(1), su(1),
5336 tset(1), vi(1), x(1), access(2), execve(2), fork(2), killpg(2),
5337 pipe(2), setrlimit(2), sigvec(2), stat(2), umask(2), vfork(2), wait(2),
5338 malloc(3), setlocale(3), tty(4), a.out(5), termcap(5), environ(7),
5339 termio(7), Introduction to the C Shell
5340 .SH VERSION
5341 This manual documents tcsh 6.22.02 (Astron) 2019-12-04.
5342 .SH AUTHORS
5343 .PD 0
5344 .TP 2
5345 William Joy
5346 Original author of \fIcsh\fR(1)
5347 .TP 2
5348 J.E. Kulp, IIASA, Laxenburg, Austria
5349 Job control and directory stack features
5350 .TP 2
5351 Ken Greer, HP Labs, 1981
5352 File name completion
5353 .TP 2
5354 Mike Ellis, Fairchild, 1983
5355 Command name recognition/completion
5356 .TP 2
5357 Paul Placeway, Ohio State CIS Dept., 1983-1993
5358 Command line editor, prompt routines, new glob syntax and numerous fixes
5359 and speedups
5360 .TP 2
5361 Karl Kleinpaste, CCI 1983-4
5362 Special aliases, directory stack extraction stuff, login/logout watch,
5363 scheduled events, and the idea of the new prompt format
5364 .TP 2
5365 Rayan Zachariassen, University of Toronto, 1984
5366 \fIls\-F\fR and \fIwhich\fR builtins and numerous bug fixes, modifications
5367 and speedups
5368 .TP 2
5369 Chris Kingsley, Caltech
5370 Fast storage allocator routines
5371 .TP 2
5372 Chris Grevstad, TRW, 1987
5373 Incorporated 4.3BSD \fIcsh\fR into \fItcsh\fR
5374 .TP 2
5375 Christos S. Zoulas, Cornell U. EE Dept., 1987-94
5376 Ports to HPUX, SVR2 and SVR3, a SysV version of getwd.c, SHORT_STRINGS support
5377 and a new version of sh.glob.c
5378 .TP 2
5379 James J Dempsey, BBN, and Paul Placeway, OSU, 1988
5380 A/UX port
5381 .TP 2
5382 Daniel Long, NNSC, 1988
5383 \fBwordchars\fR
5384 .TP 2
5385 Patrick Wolfe, Kuck and Associates, Inc., 1988
5386 \fIvi\fR mode cleanup
5387 .TP 2
5388 David C Lawrence, Rensselaer Polytechnic Institute, 1989
5389 \fBautolist\fR and ambiguous completion listing
5390 .TP 2
5391 Alec Wolman, DEC, 1989
5392 Newlines in the prompt
5393 .TP 2
5394 Matt Landau, BBN, 1989
5395 \fI~/.tcshrc\fR
5396 .TP 2
5397 Ray Moody, Purdue Physics, 1989
5398 Magic space bar history expansion
5399 .TP 2
5400 Mordechai ????, Intel, 1989
5401 printprompt() fixes and additions
5402 .TP 2
5403 Kazuhiro Honda, Dept. of Computer Science, Keio University, 1989
5404 Automatic spelling correction and \fBprompt3\fR
5405 .TP 2
5406 Per Hedeland, Ellemtel, Sweden, 1990-
5407 Various bugfixes, improvements and manual updates
5408 .TP 2
5409 Hans J. Albertsson (Sun Sweden)
5410 \fBampm\fR, \fIsettc\fR and \fItelltc\fR
5411 .TP 2
5412 Michael Bloom
5413 Interrupt handling fixes
5414 .TP 2
5415 Michael Fine, Digital Equipment Corp
5416 Extended key support
5417 .TP 2
5418 Eric Schnoebelen, Convex, 1990
5419 Convex support, lots of \fIcsh\fR bug fixes,
5420 save and restore of directory stack
5421 .TP 2
5422 Ron Flax, Apple, 1990
5423 A/UX 2.0 (re)port
5424 .TP 2
5425 Dan Oscarsson, LTH Sweden, 1990
5426 NLS support and simulated NLS support for non NLS sites, fixes
5427 .TP 2
5428 Johan Widen, SICS Sweden, 1990
5429 \fBshlvl\fR, Mach support, \fIcorrect-line\fR, 8-bit printing
5430 .TP 2
5431 Matt Day, Sanyo Icon, 1990
5432 POSIX termio support, SysV limit fixes
5433 .TP 2
5434 Jaap Vermeulen, Sequent, 1990-91
5435 Vi mode fixes, expand-line, window change fixes, Symmetry port
5436 .TP 2
5437 Martin Boyer, Institut de recherche d'Hydro-Quebec, 1991
5438 \fBautolist\fR beeping options, modified the history search to search for
5439 the whole string from the beginning of the line to the cursor.
5440 .TP 2
5441 Scott Krotz, Motorola, 1991
5442 Minix port
5443 .TP 2
5444 David Dawes, Sydney U. Australia, Physics Dept., 1991
5445 SVR4 job control fixes
5446 .TP 2
5447 Jose Sousa, Interactive Systems Corp., 1991
5448 Extended \fIvi\fR fixes and \fIvi\fR delete command
5449 .TP 2
5450 Marc Horowitz, MIT, 1991
5451 ANSIfication fixes, new exec hashing code, imake fixes, \fIwhere\fR
5452 .TP 2
5453 Bruce Sterling Woodcock, sterling@netcom.com, 1991-1995
5454 ETA and Pyramid port, Makefile and lint fixes, \fBignoreeof\fR=n addition, and
5455 various other portability changes and bug fixes
5456 .TP 2
5457 Jeff Fink, 1992
5458 \fIcomplete-word-fwd\fR and \fIcomplete-word-back\fR
5459 .TP 2
5460 Harry C. Pulley, 1992
5461 Coherent port
5462 .TP 2
5463 Andy Phillips, Mullard Space Science Lab U.K., 1992
5464 VMS-POSIX port
5465 .TP 2
5466 Beto Appleton, IBM Corp., 1992
5467 Walking process group fixes, \fIcsh\fR bug fixes,
5468 POSIX file tests, POSIX SIGHUP
5469 .TP 2
5470 Scott Bolte, Cray Computer Corp., 1992
5471 CSOS port
5472 .TP 2
5473 Kaveh R. Ghazi, Rutgers University, 1992
5474 Tek, m88k, Titan and Masscomp ports and fixes.  Added autoconf support.
5475 .TP 2
5476 Mark Linderman, Cornell University, 1992
5477 OS/2 port
5478 .TP 2
5479 Mika Liljeberg, liljeber@kruuna.Helsinki.FI, 1992
5480 Linux port
5481 .TP 2
5482 Tim P. Starrin, NASA Langley Research Center Operations, 1993
5483 Read-only variables
5484 .TP 2
5485 Dave Schweisguth, Yale University, 1993-4
5486 New man page and tcsh.man2html
5487 .TP 2
5488 Larry Schwimmer, Stanford University, 1993
5489 AFS and HESIOD patches
5490 .TP 2
5491 Luke Mewburn, RMIT University, 1994-6
5492 Enhanced directory printing in prompt,
5493 added \fBellipsis\fR and \fBrprompt\fR.
5494 .TP 2
5495 Edward Hutchins, Silicon Graphics Inc., 1996
5496 Added implicit cd.
5497 .TP 2
5498 Martin Kraemer, 1997
5499 Ported to Siemens Nixdorf EBCDIC machine
5500 .TP 2
5501 Amol Deshpande, Microsoft, 1997
5502 Ported to WIN32 (Windows/95 and Windows/NT); wrote all the missing library
5503 and message catalog code to interface to Windows.
5504 .TP 2
5505 Taga Nayuta, 1998
5506 Color ls additions.
5507 .PD
5508 .PP
5509 .SH "THANKS TO"
5510 Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig,
5511 Diana Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky and all
5512 the other people at Ohio State for suggestions and encouragement
5513 .PP
5514 All the people on the net, for putting up with,
5515 reporting bugs in, and suggesting new additions to each and every version
5516 .PP
5517 Richard M. Alderson III, for writing the `T in tcsh' section