1TCSH(1)                     General Commands Manual                    TCSH(1)
2
3
4

NAME

6       tcsh - C shell with file name completion and command line editing
7

SYNOPSIS

9       tcsh [-bcdefFimnqstvVxX] [-Dname[=value]] [arg ...]
10       tcsh -l
11

DESCRIPTION

13       tcsh  is  an enhanced but completely compatible version of the Berkeley
14       UNIX C shell, csh(1).  It is a command language interpreter usable both
15       as an interactive login shell and a shell script command processor.  It
16       includes a command-line editor (see The command-line editor),  program‐
17       mable word completion (see Completion and listing), spelling correction
18       (see Spelling correction), a history mechanism (see  History  substitu‐
19       tion),  job  control  (see Jobs) and a C-like syntax.  The NEW FEATURES
20       section describes major enhancements of tcsh over  csh(1).   Throughout
21       this  manual, features of tcsh not found in most csh(1) implementations
22       (specifically, the 4.4BSD csh) are labeled  with  `(+)',  and  features
23       which are present in csh(1) but not usually documented are labeled with
24       `(u)'.
25
26   Argument list processing
27       If the first argument (argument 0) to the shell is `-' then it is a lo‐
28       gin  shell.   A login shell can be also specified by invoking the shell
29       with the -l flag as the only argument.
30
31       The rest of the flag arguments are interpreted as follows:
32
33       -b  Forces a ``break'' from  option  processing,  causing  any  further
34           shell arguments to be treated as non-option arguments.  The remain‐
35           ing arguments will not be interpreted as shell options.   This  may
36           be used to pass options to a shell script without confusion or pos‐
37           sible subterfuge.  The shell will not  run  a  set-user  ID  script
38           without this option.
39
40       -c  Commands  are  read  from  the  following  argument  (which must be
41           present, and must be a single  argument),  stored  in  the  command
42           shell  variable  for  reference, and executed.  Any remaining argu‐
43           ments are placed in the argv shell variable.
44
45       -d  The shell loads the directory stack from  ~/.cshdirs  as  described
46           under Startup and shutdown, whether or not it is a login shell. (+)
47
48       -Dname[=value]
49           Sets the environment variable name to value. (Domain/OS only) (+)
50
51       -e  The  shell  exits  if  any invoked command terminates abnormally or
52           yields a non-zero exit status.
53
54       -f  The shell does not load any resource or startup files,  or  perform
55           any command hashing, and thus starts faster.
56
57       -F  The shell uses fork(2) instead of vfork(2) to spawn processes. (+)
58
59       -i  The  shell is interactive and prompts for its top-level input, even
60           if it appears to not be a terminal.  Shells are interactive without
61           this option if their inputs and outputs are terminals.
62
63       -l  The shell is a login shell.  Applicable only if -l is the only flag
64           specified.
65
66       -m  The shell loads ~/.tcshrc even if it does not belong to the  effec‐
67           tive user.  Newer versions of su(1) can pass -m to the shell. (+)
68
69       -n  The  shell parses commands but does not execute them.  This aids in
70           debugging shell scripts.
71
72       -q  The shell accepts SIGQUIT (see Signal handling) and behaves when it
73           is used under a debugger.  Job control is disabled. (u)
74
75       -s  Command input is taken from the standard input.
76
77       -t  The  shell reads and executes a single line of input.  A `\' may be
78           used to escape the newline at the end of  this  line  and  continue
79           onto another line.
80
81       -v  Sets  the  verbose  shell variable, so that command input is echoed
82           after history substitution.
83
84       -x  Sets the echo shell variable, so that commands are  echoed  immedi‐
85           ately before execution.
86
87       -V  Sets the verbose shell variable even before executing ~/.tcshrc.
88
89       -X  Is to -x as -V is to -v.
90
91       --help
92           Print a help message on the standard output and exit. (+)
93
94       --version
95           Print the version/platform/compilation options on the standard out‐
96           put and exit.  This information is also contained  in  the  version
97           shell variable. (+)
98
99       After processing of flag arguments, if arguments remain but none of the
100       -c, -i, -s, or -t options were given, the first argument  is  taken  as
101       the  name  of  a  file of commands, or ``script'', to be executed.  The
102       shell opens this file and saves its name for possible resubstitution by
103       `$0'.   Because  many systems use either the standard version 6 or ver‐
104       sion 7 shells whose shell scripts are not compatible with  this  shell,
105       the  shell uses such a `standard' shell to execute a script whose first
106       character is not a `#', i.e., that does not start with a comment.
107
108       Remaining arguments are placed in the argv shell variable.
109
110   Startup and shutdown
111       A login shell begins  by  executing  commands  from  the  system  files
112       /etc/csh.cshrc  and  /etc/csh.login.   It  then  executes commands from
113       files in the user's home directory: first ~/.tcshrc (+) or,  if  ~/.tc‐
114       shrc  is  not  found, ~/.cshrc, then the contents of ~/.history (or the
115       value of the histfile shell variable)  are  loaded  into  memory,  then
116       ~/.login,  and  finally  ~/.cshdirs (or the value of the dirsfile shell
117       variable) (+).  The shell may read /etc/csh.login before instead of af‐
118       ter  /etc/csh.cshrc,  and ~/.login before instead of after ~/.tcshrc or
119       ~/.cshrc and ~/.history, if so compiled; see the  version  shell  vari‐
120       able. (+)
121
122       Non-login  shells read only /etc/csh.cshrc and ~/.tcshrc or ~/.cshrc on
123       startup.
124
125       For examples of startup  files,  please  consult  http://tcshrc.source
126       forge.net.
127
128       Commands  like stty(1) and tset(1), which need be run only once per lo‐
129       gin, usually go in one's ~/.login file.  Users who need to use the same
130       set  of  files with both csh(1) and tcsh can have only a ~/.cshrc which
131       checks for the existence of the tcsh shell variable (q.v.) before using
132       tcsh-specific  commands,  or  can  have both a ~/.cshrc and a ~/.tcshrc
133       which sources (see the builtin command) ~/.cshrc.   The  rest  of  this
134       manual  uses  `~/.tcshrc'  to  mean  `~/.tcshrc or, if ~/.tcshrc is not
135       found, ~/.cshrc'.
136
137       In the normal case, the shell begins reading commands from  the  termi‐
138       nal,  prompting with `> '.  (Processing of arguments and the use of the
139       shell to process files containing command scripts are described later.)
140       The  shell  repeatedly  reads  a  line of command input, breaks it into
141       words, places it on the command history list, parses  it  and  executes
142       each command in the line.
143
144       One can log out by typing `^D' on an empty line, `logout' or `login' or
145       via the shell's autologout mechanism (see the  autologout  shell  vari‐
146       able).  When a login shell terminates it sets the logout shell variable
147       to `normal' or `automatic' as appropriate, then executes commands  from
148       the files /etc/csh.logout and ~/.logout.  The shell may drop DTR on lo‐
149       gout if so compiled; see the version shell variable.
150
151       The names of the system login and logout files vary from system to sys‐
152       tem for compatibility with different csh(1) variants; see FILES.
153
154   Editing
155       We  first describe The command-line editor.  The Completion and listing
156       and Spelling correction sections describe  two  sets  of  functionality
157       that  are  implemented  as  editor commands but which deserve their own
158       treatment.  Finally, Editor commands lists  and  describes  the  editor
159       commands specific to the shell and their default bindings.
160
161   The command-line editor (+)
162       Command-line  input  can  be edited using key sequences much like those
163       used in emacs(1) or vi(1).  The editor is active  only  when  the  edit
164       shell  variable  is  set, which it is by default in interactive shells.
165       The  bindkey   builtin   can   display   and   change   key   bindings.
166       emacs(1)-style  key  bindings are used by default (unless the shell was
167       compiled otherwise; see the version shell variable),  but  bindkey  can
168       change the key bindings to vi(1)-style bindings en masse.
169
170       The  shell always binds the arrow keys (as defined in the TERMCAP envi‐
171       ronment variable) to
172
173           down    down-history
174           up      up-history
175           left    backward-char
176           right   forward-char
177
178       unless doing so would alter another single-character binding.  One  can
179       set  the  arrow  key escape sequences to the empty string with settc to
180       prevent these bindings.  The ANSI/VT100 sequences for  arrow  keys  are
181       always bound.
182
183       Other  key  bindings  are,  for  the most part, what emacs(1) and vi(1)
184       users would expect and can easily be displayed by bindkey, so there  is
185       no  need to list them here.  Likewise, bindkey can list the editor com‐
186       mands with a short description of each.  Certain key bindings have dif‐
187       ferent behavior depending if emacs(1) or vi(1) style bindings are being
188       used; see vimode for more information.
189
190       Note that editor commands do not have the same notion of a ``word''  as
191       does  the  shell.   The editor delimits words with any non-alphanumeric
192       characters not in the shell variable wordchars, while the shell  recog‐
193       nizes  only whitespace and some of the characters with special meanings
194       to it, listed under Lexical structure.
195
196   Completion and listing (+)
197       The shell is often able to complete words when given a unique abbrevia‐
198       tion.  Type part of a word (for example `ls /usr/lost') and hit the tab
199       key to run the complete-word editor command.  The shell  completes  the
200       filename  `/usr/lost'  to  `/usr/lost+found/', replacing the incomplete
201       word with the complete word in the input buffer.   (Note  the  terminal
202       `/';  completion  adds  a `/' to the end of completed directories and a
203       space to the end of other completed words, to speed typing and  provide
204       a visual indicator of successful completion.  The addsuffix shell vari‐
205       able can be unset to prevent this.)  If  no  match  is  found  (perhaps
206       `/usr/lost+found' doesn't exist), the terminal bell rings.  If the word
207       is already complete (perhaps there is a `/usr/lost' on your system,  or
208       perhaps  you  were  thinking too far ahead and typed the whole thing) a
209       `/' or space is added to the end if it isn't already there.
210
211       Completion works anywhere in the line, not at just the  end;  completed
212       text  pushes the rest of the line to the right.  Completion in the mid‐
213       dle of a word often results in leftover characters to the right of  the
214       cursor that need to be deleted.
215
216       Commands  and variables can be completed in much the same way.  For ex‐
217       ample, typing `em[tab]' would complete `em' to `emacs'  if  emacs  were
218       the  only  command  on your system beginning with `em'.  Completion can
219       find a command in any directory in path or if given  a  full  pathname.
220       Typing  `echo  $ar[tab]'  would  complete  `$ar' to `$argv' if no other
221       variable began with `ar'.
222
223       The shell parses the input buffer to determine  whether  the  word  you
224       want  to  complete  should be completed as a filename, command or vari‐
225       able.  The first word in the buffer and the first word  following  `;',
226       `|',  `|&',  `&&' or `||' is considered to be a command.  A word begin‐
227       ning with `$' is considered to be a variable.  Anything else is a file‐
228       name.  An empty line is `completed' as a filename.
229
230       You  can  list the possible completions of a word at any time by typing
231       `^D' to run the delete-char-or-list-or-eof editor command.   The  shell
232       lists  the  possible completions using the ls-F builtin (q.v.)  and re‐
233       prints the prompt and unfinished command line, for example:
234
235           > ls /usr/l[^D]
236           lbin/       lib/        local/      lost+found/
237           > ls /usr/l
238
239       If the autolist shell variable is set, the shell  lists  the  remaining
240       choices (if any) whenever completion fails:
241
242           > set autolist
243           > nm /usr/lib/libt[tab]
244           libtermcap.a@ libtermlib.a@
245           > nm /usr/lib/libterm
246
247       If autolist is set to `ambiguous', choices are listed only when comple‐
248       tion fails and adds no new characters to the word being completed.
249
250       A filename to be completed can contain variables, your own  or  others'
251       home  directories  abbreviated with `~' (see Filename substitution) and
252       directory stack entries abbreviated with `=' (see Directory stack  sub‐
253       stitution).  For example,
254
255           > ls ~k[^D]
256           kahn    kas     kellogg
257           > ls ~ke[tab]
258           > ls ~kellogg/
259
260       or
261
262           > set local = /usr/local
263           > ls $lo[tab]
264           > ls $local/[^D]
265           bin/ etc/ lib/ man/ src/
266           > ls $local/
267
268       Note  that  variables  can also be expanded explicitly with the expand-
269       variables editor command.
270
271       delete-char-or-list-or-eof lists at only the end of the  line;  in  the
272       middle  of  a  line it deletes the character under the cursor and on an
273       empty line it logs one out or,  if  ignoreeof  is  set,  does  nothing.
274       `M-^D', bound to the editor command list-choices, lists completion pos‐
275       sibilities anywhere on a line, and list-choices (or any one of the  re‐
276       lated  editor  commands  that  do or don't delete, list and/or log out,
277       listed under delete-char-or-list-or-eof) can be bound to `^D' with  the
278       bindkey builtin command if so desired.
279
280       The complete-word-fwd and complete-word-back editor commands (not bound
281       to any keys by default) can be used to cycle up and  down  through  the
282       list  of possible completions, replacing the current word with the next
283       or previous word in the list.
284
285       The shell variable fignore can be set to a list of suffixes to  be  ig‐
286       nored by completion.  Consider the following:
287
288           > ls
289           Makefile        condiments.h~   main.o          side.c
290           README          main.c          meal            side.o
291           condiments.h    main.c~
292           > set fignore = (.o \~)
293           > emacs ma[^D]
294           main.c   main.c~  main.o
295           > emacs ma[tab]
296           > emacs main.c
297
298       `main.c~' and `main.o' are ignored by completion (but not listing), be‐
299       cause they end in suffixes in fignore.  Note that a `\' was  needed  in
300       front of `~' to prevent it from being expanded to home as described un‐
301       der Filename substitution.  fignore is ignored if only  one  completion
302       is possible.
303
304       If  the  complete shell variable is set to `enhance', completion 1) ig‐
305       nores case and 2) considers periods, hyphens and underscores (`.',  `-'
306       and `_') to be word separators and hyphens and underscores to be equiv‐
307       alent.  If you had the following files
308
309           comp.lang.c      comp.lang.perl   comp.std.c++
310           comp.lang.c++    comp.std.c
311
312       and typed `mail -f c.l.c[tab]', it  would  be  completed  to  `mail  -f
313       comp.lang.c',  and  ^D  would  list  `comp.lang.c' and `comp.lang.c++'.
314       `mail -f c..c++[^D]' would  list  `comp.lang.c++'  and  `comp.std.c++'.
315       Typing `rm a--file[^D]' in the following directory
316
317           A_silly_file    a-hyphenated-file    another_silly_file
318
319       would list all three files, because case is ignored and hyphens and un‐
320       derscores are equivalent.  Periods, however, are not equivalent to  hy‐
321       phens or underscores.
322
323       If  the complete shell variable is set to `Enhance', completion ignores
324       case and differences between a hyphen and an underscore word  separator
325       only  when  the user types a lowercase character or a hyphen.  Entering
326       an uppercase character or an underscore will not match the  correspond‐
327       ing   lowercase   character  or  hyphen  word  separator.   Typing  `rm
328       a--file[^D]' in the directory of the previous example would still  list
329       all   three   files,   but   typing   `rm  A--file'  would  match  only
330       `A_silly_file'  and  typing   `rm   a__file[^D]'   would   match   just
331       `A_silly_file'  and  `another_silly_file'  because  the user explicitly
332       used an uppercase or an underscore character.
333
334       Completion and listing are affected by several other  shell  variables:
335       recexact  can be set to complete on the shortest possible unique match,
336       even if more typing might result in a longer match:
337
338           > ls
339           fodder   foo      food     foonly
340           > set recexact
341           > rm fo[tab]
342
343       just beeps, because `fo' could expand to `fod' or `foo', but if we type
344       another `o',
345
346           > rm foo[tab]
347           > rm foo
348
349       the completion completes on `foo', even though `food' and `foonly' also
350       match.  autoexpand can be set to run the expand-history editor  command
351       before each completion attempt, autocorrect can be set to spelling-cor‐
352       rect the word to be completed (see  Spelling  correction)  before  each
353       completion attempt and correct can be set to complete commands automat‐
354       ically after one hits `return'.  matchbeep can be set to  make  comple‐
355       tion beep or not beep in a variety of situations, and nobeep can be set
356       to never beep at all.  nostat can be  set  to  a  list  of  directories
357       and/or patterns that match directories to prevent the completion mecha‐
358       nism from stat(2)ing those directories.  listmax and listmaxrows can be
359       set  to  limit  the  number  of  items and rows (respectively) that are
360       listed without asking first.  recognize_only_executables can be set  to
361       make  the  shell list only executables when listing commands, but it is
362       quite slow.
363
364       Finally, the complete builtin command can be used to tell the shell how
365       to  complete  words other than filenames, commands and variables.  Com‐
366       pletion and listing do not work on glob-patterns (see Filename  substi‐
367       tution),  but  the  list-glob  and  expand-glob editor commands perform
368       equivalent functions for glob-patterns.
369
370   Spelling correction (+)
371       The shell can sometimes correct the spelling of filenames, commands and
372       variable names as well as completing and listing them.
373
374       Individual  words  can be spelling-corrected with the spell-word editor
375       command (usually bound to M-s and M-S) and the entire input buffer with
376       spell-line  (usually  bound to M-$).  The correct shell variable can be
377       set to `cmd' to correct the command name or `all' to correct the entire
378       line  each  time return is typed, and autocorrect can be set to correct
379       the word to be completed before each completion attempt.
380
381       When spelling correction is invoked in any of these ways and the  shell
382       thinks that any part of the command line is misspelled, it prompts with
383       the corrected line:
384
385           > set correct = cmd
386           > lz /usr/bin
387           CORRECT>ls /usr/bin (y|n|e|a)?
388
389       One can answer `y' or space to execute the corrected line, `e' to leave
390       the  uncorrected  command in the input buffer, `a' to abort the command
391       as if `^C' had been hit, and anything else to execute the original line
392       unchanged.
393
394       Spelling  correction  recognizes user-defined completions (see the com‐
395       plete builtin command).  If an input word in a  position  for  which  a
396       completion is defined resembles a word in the completion list, spelling
397       correction registers a misspelling and suggests the latter  word  as  a
398       correction.   However, if the input word does not match any of the pos‐
399       sible completions for that position, spelling correction does not  reg‐
400       ister a misspelling.
401
402       Like  completion, spelling correction works anywhere in the line, push‐
403       ing the rest of the line to the right and possibly leaving extra  char‐
404       acters to the right of the cursor.
405
406   Editor commands (+)
407       `bindkey'  lists  key  bindings  and `bindkey -l' lists and briefly de‐
408       scribes editor commands.  Only new  or  especially  interesting  editor
409       commands  are  described here.  See emacs(1) and vi(1) for descriptions
410       of each editor's key bindings.
411
412       The character or characters to which each command is bound  by  default
413       is  given  in  parentheses.  `^character' means a control character and
414       `M-character' a meta character, typed as escape-character on  terminals
415       without  a  meta key.  Case counts, but commands that are bound to let‐
416       ters by default are bound to both lower- and uppercase letters for con‐
417       venience.
418
419       backward-char (^B, left)
420               Move back a character.  Cursor behavior modified by vimode.
421
422       backward-delete-word (M-^H, M-^?)
423               Cut  from  beginning  of  current word to cursor - saved in cut
424               buffer.  Word boundary behavior modified by vimode.
425
426       backward-word (M-b, M-B)
427               Move to beginning of current word.  Word  boundary  and  cursor
428               behavior modified by vimode.
429
430       beginning-of-line (^A, home)
431               Move to beginning of line.  Cursor behavior modified by vimode.
432
433       capitalize-word (M-c, M-C)
434               Capitalize  the  characters from cursor to end of current word.
435               Word boundary behavior modified by vimode.
436
437       complete-word (tab)
438               Completes a word as described under Completion and listing.
439
440       complete-word-back (not bound)
441               Like complete-word-fwd, but steps up from the end of the list.
442
443       complete-word-fwd (not bound)
444               Replaces the current word with the first word in  the  list  of
445               possible completions.  May be repeated to step down through the
446               list.  At the end of the list, beeps and reverts to the  incom‐
447               plete word.
448
449       complete-word-raw (^X-tab)
450               Like complete-word, but ignores user-defined completions.
451
452       copy-prev-word (M-^_)
453               Copies  the  previous  word  in the current line into the input
454               buffer.  See also  insert-last-word.   Word  boundary  behavior
455               modified by vimode.
456
457       dabbrev-expand (M-/)
458               Expands  the  current word to the most recent preceding one for
459               which the current is a leading substring, wrapping  around  the
460               history  list  (once)  if  necessary.  Repeating dabbrev-expand
461               without any intervening typing changes  to  the  next  previous
462               word etc., skipping identical matches much like history-search-
463               backward does.
464
465       delete-char (not bound)
466               Deletes the character under the cursor.  See also  delete-char-
467               or-list-or-eof.  Cursor behavior modified by vimode.
468
469       delete-char-or-eof (not bound)
470               Does  delete-char  if  there is a character under the cursor or
471               end-of-file on an empty line.  See also delete-char-or-list-or-
472               eof.  Cursor behavior modified by vimode.
473
474       delete-char-or-list (not bound)
475               Does  delete-char  if  there is a character under the cursor or
476               list-choices at the end of the line.  See also  delete-char-or-
477               list-or-eof.
478
479       delete-char-or-list-or-eof (^D)
480               Does  delete-char  if  there  is  a character under the cursor,
481               list-choices at the end of the line or end-of-file on an  empty
482               line.  See also those three commands, each of which does only a
483               single action, and delete-char-or-eof, delete-char-or-list  and
484               list-or-eof,  each  of  which  does  a different two out of the
485               three.
486
487       delete-word (M-d, M-D)
488               Cut from cursor to end of current word - save  in  cut  buffer.
489               Word boundary behavior modified by vimode.
490
491       down-history (down-arrow, ^N)
492               Like up-history, but steps down, stopping at the original input
493               line.
494
495       downcase-word (M-l, M-L)
496               Lowercase the characters from cursor to end  of  current  word.
497               Word boundary behavior modified by vimode.
498
499       end-of-file (not bound)
500               Signals  an  end  of file, causing the shell to exit unless the
501               ignoreeof shell variable (q.v.) is set to  prevent  this.   See
502               also delete-char-or-list-or-eof.
503
504       end-of-line (^E, end)
505               Move  cursor  to  end of line.  Cursor behavior modified by vi‐
506               mode.
507
508       expand-history (M-space)
509               Expands history substitutions in the current word.  See History
510               substitution.  See also magic-space, toggle-literal-history and
511               the autoexpand shell variable.
512
513       expand-glob (^X-*)
514               Expands the glob-pattern to the left of the cursor.  See  File‐
515               name substitution.
516
517       expand-line (not bound)
518               Like  expand-history, but expands history substitutions in each
519               word in the input buffer.
520
521       expand-variables (^X-$)
522               Expands the variable to the left of the cursor.   See  Variable
523               substitution.
524
525       forward-char (^F, right)
526               Move  forward  one  character.  Cursor behavior modified by vi‐
527               mode.
528
529       forward-word (M-f, M-F)
530               Move forward to end of current word.  Word boundary and  cursor
531               behavior modified by vimode.
532
533       history-search-backward (M-p, M-P)
534               Searches  backwards  through the history list for a command be‐
535               ginning with the current contents of the input buffer up to the
536               cursor  and copies it into the input buffer.  The search string
537               may be a glob-pattern (see  Filename  substitution)  containing
538               `*',  `?', `[]' or `{}'.  up-history and down-history will pro‐
539               ceed from the appropriate point in  the  history  list.   Emacs
540               mode only.  See also history-search-forward and i-search-back.
541
542       history-search-forward (M-n, M-N)
543               Like history-search-backward, but searches forward.
544
545       i-search-back (not bound)
546               Searches  backward  like  history-search-backward,  copies  the
547               first match into the input buffer with the cursor positioned at
548               the  end of the pattern, and prompts with `bck: ' and the first
549               match.  Additional  characters  may  be  typed  to  extend  the
550               search,  i-search-back  may be typed to continue searching with
551               the same pattern, wrapping around the history  list  if  neces‐
552               sary,  (i-search-back  must  be bound to a single character for
553               this to work) or one of the following special characters may be
554               typed:
555
556                   ^W      Appends  the  rest  of the word under the cursor to
557                           the search pattern.
558                   delete (or any character bound to backward-delete-char)
559                           Undoes the effect of the last character  typed  and
560                           deletes  a character from the search pattern if ap‐
561                           propriate.
562                   ^G      If the previous search was successful,  aborts  the
563                           entire  search.  If not, goes back to the last suc‐
564                           cessful search.
565                   escape  Ends the search, leaving the current  line  in  the
566                           input buffer.
567
568               Any other character not bound to self-insert-command terminates
569               the search, leaving the current line in the input  buffer,  and
570               is then interpreted as normal input.  In particular, a carriage
571               return causes the current line to be  executed.   See  also  i-
572               search-fwd and history-search-backward.  Word boundary behavior
573               modified by vimode.
574
575       i-search-fwd (not bound)
576               Like i-search-back, but searches forward.  Word boundary behav‐
577               ior modified by vimode.
578
579       insert-last-word (M-_)
580               Inserts  the  last  word of the previous input line (`!$') into
581               the input buffer.  See also copy-prev-word.
582
583       list-choices (M-^D)
584               Lists completion possibilities as  described  under  Completion
585               and  listing.   See  also  delete-char-or-list-or-eof and list-
586               choices-raw.
587
588       list-choices-raw (^X-^D)
589               Like list-choices, but ignores user-defined completions.
590
591       list-glob (^X-g, ^X-G)
592               Lists (via the ls-F builtin) matches to the  glob-pattern  (see
593               Filename substitution) to the left of the cursor.
594
595       list-or-eof (not bound)
596               Does  list-choices  or  end-of-file on an empty line.  See also
597               delete-char-or-list-or-eof.
598
599       magic-space (not bound)
600               Expands history substitutions in the current line, like expand-
601               history,  and  inserts  a space.  magic-space is designed to be
602               bound to the space bar, but is not bound by default.
603
604       normalize-command (^X-?)
605               Searches for the current word in PATH and, if it is found,  re‐
606               places  it with the full path to the executable.  Special char‐
607               acters are quoted.  Aliases are expanded and  quoted  but  com‐
608               mands within aliases are not.  This command is useful with com‐
609               mands that take commands as arguments, e.g., `dbx' and `sh -x'.
610
611       normalize-path (^X-n, ^X-N)
612               Expands the current word as described under the  `expand'  set‐
613               ting of the symlinks shell variable.
614
615       overwrite-mode (unbound)
616               Toggles between input and overwrite modes.
617
618       run-fg-editor (M-^Z)
619               Saves  the current input line and looks for a stopped job where
620               the file name portion of its first word is found in the editors
621               shell variable.  If editors is not set, then the file name por‐
622               tion of the EDITOR environment variable (`ed' if unset) and the
623               VISUAL  environment  variable (`vi' if unset) will be used.  If
624               such a job is found, it is restarted as if `fg %job'  had  been
625               typed.  This is used to toggle back and forth between an editor
626               and the shell easily.  Some people bind this command to `^Z' so
627               they can do this even more easily.
628
629       run-help (M-h, M-H)
630               Searches  for  documentation  on the current command, using the
631               same notion of `current command' as  the  completion  routines,
632               and prints it.  There is no way to use a pager; run-help is de‐
633               signed for short help files.  If the special alias  helpcommand
634               is defined, it is run with the command name as a sole argument.
635               Else, documentation should be in  a  file  named  command.help,
636               command.1,  command.6, command.8 or command, which should be in
637               one of the directories listed in the  HPATH  environment  vari‐
638               able.   If  there  is more than one help file only the first is
639               printed.
640
641       self-insert-command (text characters)
642               In insert mode (the default), inserts the typed character  into
643               the  input line after the character under the cursor.  In over‐
644               write mode, replaces the character under the  cursor  with  the
645               typed  character.  The input mode is normally preserved between
646               lines, but the inputmode shell variable can be set to  `insert'
647               or  `overwrite' to put the editor in that mode at the beginning
648               of each line.  See also overwrite-mode.
649
650       sequence-lead-in (arrow prefix, meta prefix, ^X)
651               Indicates that the following characters are part of a multi-key
652               sequence.   Binding  a  command  to a multi-key sequence really
653               creates two bindings: the first character  to  sequence-lead-in
654               and the whole sequence to the command.  All sequences beginning
655               with a character  bound  to  sequence-lead-in  are  effectively
656               bound to undefined-key unless bound to another command.
657
658       spell-line (M-$)
659               Attempts to correct the spelling of each word in the input buf‐
660               fer, like spell-word, but ignores words whose  first  character
661               is  one  of  `-', `!', `^' or `%', or which contain `\', `*' or
662               `?', to avoid problems with  switches,  substitutions  and  the
663               like.  See Spelling correction.
664
665       spell-word (M-s, M-S)
666               Attempts  to  correct  the  spelling of the current word as de‐
667               scribed under Spelling correction.  Checks each component of  a
668               word which appears to be a pathname.
669
670       toggle-literal-history (M-r, M-R)
671               Expands  or `unexpands' history substitutions in the input buf‐
672               fer.  See also expand-history and the  autoexpand  shell  vari‐
673               able.
674
675       undefined-key (any unbound key)
676               Beeps.
677
678       up-history (up-arrow, ^P)
679               Copies  the  previous  entry in the history list into the input
680               buffer.  If histlit is set, uses the literal form of the entry.
681               May  be  repeated to step up through the history list, stopping
682               at the top.
683
684       upcase-word (M-u, M-U)
685               Uppercase the characters from cursor to end  of  current  word.
686               Word boundary behavior modified by vimode.
687
688       vi-beginning-of-next-word (not bound)
689               Vi  goto  the beginning of next word.  Word boundary and cursor
690               behavior modified by vimode.
691
692       vi-eword (not bound)
693               Vi move to the end of the current word.  Word boundary behavior
694               modified by vimode.
695
696       vi-search-back (?)
697               Prompts  with `?' for a search string (which may be a glob-pat‐
698               tern, as with history-search-backward),  searches  for  it  and
699               copies it into the input buffer.  The bell rings if no match is
700               found.  Hitting return ends the  search  and  leaves  the  last
701               match  in the input buffer.  Hitting escape ends the search and
702               executes the match.  vi mode only.
703
704       vi-search-fwd (/)
705               Like vi-search-back, but searches forward.
706
707       which-command (M-?)
708               Does a which (see the description of the  builtin  command)  on
709               the first word of the input buffer.
710
711       yank-pop (M-y)
712               When executed immediately after a yank or another yank-pop, re‐
713               places the yanked string with the next previous string from the
714               killring.  This  also  has the effect of rotating the killring,
715               such that this string will  be  considered  the  most  recently
716               killed  by  a later yank command. Repeating yank-pop will cycle
717               through the killring any number of times.
718
719   Lexical structure
720       The shell splits input lines into words at blanks and tabs.   The  spe‐
721       cial  characters  `&', `|', `;', `<', `>', `(', and `)' and the doubled
722       characters `&&', `||', `<<' and `>>' are always separate words, whether
723       or not they are surrounded by whitespace.
724
725       When the shell's input is not a terminal, the character `#' is taken to
726       begin a comment.  Each `#' and the rest of the input line on  which  it
727       appears is discarded before further parsing.
728
729       A  special  character  (including a blank or tab) may be prevented from
730       having its special meaning, and possibly made part of another word,  by
731       preceding  it  with  a backslash (`\') or enclosing it in single (`''),
732       double (`"') or backward (``') quotes.  When  not  otherwise  quoted  a
733       newline  preceded  by a `\' is equivalent to a blank, but inside quotes
734       this sequence results in a newline.
735
736       Furthermore, all Substitutions (see below) except History  substitution
737       can  be  prevented  by  enclosing  the strings (or parts of strings) in
738       which they appear with single quotes or by quoting the crucial  charac‐
739       ter(s) (e.g., `$' or ``' for Variable substitution or Command substitu‐
740       tion respectively) with `\'.   (Alias  substitution  is  no  exception:
741       quoting  in any way any character of a word for which an alias has been
742       defined prevents substitution of the alias.  The usual way  of  quoting
743       an  alias  is  to precede it with a backslash.) History substitution is
744       prevented by backslashes but not by single quotes.  Strings quoted with
745       double  or  backward  quotes  undergo Variable substitution and Command
746       substitution, but other substitutions are prevented.
747
748       Text inside single or double quotes becomes a single word (or  part  of
749       one).   Metacharacters  in these strings, including blanks and tabs, do
750       not form separate words.  Only in one special case (see Command substi‐
751       tution  below)  can a double-quoted string yield parts of more than one
752       word; single-quoted strings never do.   Backward  quotes  are  special:
753       they  signal Command substitution (q.v.), which may result in more than
754       one word.
755
756       Quoting complex strings, particularly strings which themselves  contain
757       quoting characters, can be confusing.  Remember that quotes need not be
758       used as they are in human writing!  It may be easier to  quote  not  an
759       entire  string,  but only those parts of the string which need quoting,
760       using different types of quoting to do so if appropriate.
761
762       The backslash_quote shell variable (q.v.) can  be  set  to  make  back‐
763       slashes  always  quote  `\',  `'',  and `"'.  (+) This may make complex
764       quoting tasks easier, but it can cause syntax errors in csh(1) scripts.
765
766   Substitutions
767       We now describe the various transformations the shell performs  on  the
768       input  in  the  order in which they occur.  We note in passing the data
769       structures involved and the commands and variables which  affect  them.
770       Remember  that  substitutions  can be prevented by quoting as described
771       under Lexical structure.
772
773   History substitution
774       Each command, or ``event'', input from the terminal  is  saved  in  the
775       history  list.   The  previous command is always saved, and the history
776       shell variable can be set to a number to save that many commands.   The
777       histdup  shell variable can be set to not save duplicate events or con‐
778       secutive duplicate events.
779
780       Saved commands are numbered sequentially from 1 and  stamped  with  the
781       time.   It  is not usually necessary to use event numbers, but the cur‐
782       rent event number can be made part of the prompt by placing an  `!'  in
783       the prompt shell variable.
784
785       By  default history entries are displayed by printing each parsed token
786       separated by space; thus the redirection operator `>&!'  will  be  dis‐
787       played as `> & !'.
788
789       The  shell  actually saves history in expanded and literal (unexpanded)
790       forms.  If the histlit shell variable is set, commands that display and
791       store history use the literal form.
792
793       The  history  builtin  command  can print, store in a file, restore and
794       clear the history list at any time, and the savehist and histfile shell
795       variables  can be set to store the history list automatically on logout
796       and restore it on login.
797
798       History substitutions introduce words from the history  list  into  the
799       input  stream, making it easy to repeat commands, repeat arguments of a
800       previous command in the current command, or fix  spelling  mistakes  in
801       the  previous  command  with  little typing and a high degree of confi‐
802       dence.
803
804       History substitutions begin with the character  `!'.   They  may  begin
805       anywhere  in  the  input  stream, but they do not nest.  The `!' may be
806       preceded by a `\' to prevent its special meaning;  for  convenience,  a
807       `!'  is  passed unchanged when it is followed by a blank, tab, newline,
808       `=' or `('.  History substitutions also occur when an input line begins
809       with  `^'.   This  special  abbreviation  will be described later.  The
810       characters used to signal history substitution (`!'  and  `^')  can  be
811       changed  by setting the histchars shell variable.  Any input line which
812       contains a history substitution is printed before it is executed.
813
814       A history substitution may have an ``event specification'', which indi‐
815       cates  the  event  from  which words are to be taken, a ``word designa‐
816       tor'', which selects particular words from the chosen event,  and/or  a
817       ``modifier'', which manipulates the selected words.
818
819       An event specification can be
820
821           n       A number, referring to a particular event
822           -n      An  offset,  referring  to  the  event n before the current
823                   event
824           #       The current  event.   This  should  be  used  carefully  in
825                   csh(1), where there is no check for recursion.  tcsh allows
826                   10 levels of recursion.  (+)
827           !       The previous event (equivalent to `-1')
828           s       The most recent event whose  first  word  begins  with  the
829                   string s
830           ?s?     The  most  recent  event  which contains the string s.  The
831                   second `?' can be omitted if it is immediately followed  by
832                   a newline.
833
834       For example, consider this bit of someone's history list:
835
836            9  8:30    nroff -man wumpus.man
837           10  8:31    cp wumpus.man wumpus.man.old
838           11  8:36    vi wumpus.man
839           12  8:37    diff wumpus.man.old wumpus.man
840
841       The  commands  are shown with their event numbers and time stamps.  The
842       current event, which we haven't typed in yet, is event 13.   `!11'  and
843       `!-2'  refer to event 11.  `!!' refers to the previous event, 12.  `!!'
844       can be abbreviated `!' if it is followed by `:' (`:' is  described  be‐
845       low).   `!n'  refers  to event 9, which begins with `n'.  `!?old?' also
846       refers to event 12, which contains `old'.  Without word designators  or
847       modifiers  history  references simply expand to the entire event, so we
848       might type `!cp' to redo the copy command or `!!|more'  if  the  `diff'
849       output scrolled off the top of the screen.
850
851       History  references  may  be  insulated  from the surrounding text with
852       braces if necessary.  For example, `!vdoc' would look for a command be‐
853       ginning  with `vdoc', and, in this example, not find one, but `!{v}doc'
854       would expand unambiguously to `vi wumpus.mandoc'.  Even in braces, his‐
855       tory substitutions do not nest.
856
857       (+) While csh(1) expands, for example, `!3d' to event 3 with the letter
858       `d' appended to it, tcsh expands it to the last  event  beginning  with
859       `3d';  only  completely numeric arguments are treated as event numbers.
860       This makes it possible to recall events beginning with numbers.  To ex‐
861       pand `!3d' as in csh(1) say `!{3}d'.
862
863       To  select words from an event we can follow the event specification by
864       a `:' and a designator for the desired words.  The words  of  an  input
865       line are numbered from 0, the first (usually command) word being 0, the
866       second word (first argument) being 1, etc.  The basic word  designators
867       are:
868
869           0       The first (command) word
870           n       The nth argument
871           ^       The first argument, equivalent to `1'
872           $       The last argument
873           %       The word matched by an ?s? search
874           x-y     A range of words
875           -y      Equivalent to `0-y'
876           *       Equivalent  to `^-$', but returns nothing if the event con‐
877                   tains only 1 word
878           x*      Equivalent to `x-$'
879           x-      Equivalent to `x*', but omitting the last word (`$')
880
881       Selected words are inserted into the command line separated  by  single
882       blanks.   For example, the `diff' command in the previous example might
883       have been typed as `diff !!:1.old !!:1' (using `:1' to select the first
884       argument  from  the previous event) or `diff !-2:2 !-2:1' to select and
885       swap the arguments from the `cp' command.  If we didn't care about  the
886       order  of  the `diff' we might have said `diff !-2:1-2' or simply `diff
887       !-2:*'.  The `cp'  command  might  have  been  written  `cp  wumpus.man
888       !#:1.old',  using `#' to refer to the current event.  `!n:- hurkle.man'
889       would reuse the first two words from the `nroff' command to say  `nroff
890       -man hurkle.man'.
891
892       The `:' separating the event specification from the word designator can
893       be omitted if the argument selector begins with a `^', `$', `*', `%' or
894       `-'.   For  example,  our  `diff' command might have been `diff !!^.old
895       !!^' or, equivalently, `diff !!$.old !!$'.  However, if `!!' is  abbre‐
896       viated `!', an argument selector beginning with `-' will be interpreted
897       as an event specification.
898
899       A history reference may have a word designator but no event  specifica‐
900       tion.   It then references the previous command.  Continuing our `diff'
901       example, we could have said simply `diff !^.old !^' or, to get the  ar‐
902       guments in the opposite order, just `diff !*'.
903
904       The  word  or  words  in  a history reference can be edited, or ``modi‐
905       fied'', by following it with one or more modifiers, each preceded by  a
906       `:':
907
908           h       Remove a trailing pathname component, leaving the head.
909           t       Remove all leading pathname components, leaving the tail.
910           r       Remove a filename extension `.xxx', leaving the root name.
911           e       Remove all but the extension.
912           u       Uppercase the first lowercase letter.
913           l       Lowercase the first uppercase letter.
914           s/l/r/  Substitute  l  for  r.   l is simply a string like r, not a
915                   regular expression as in the eponymous ed(1) command.   Any
916                   character  may  be used as the delimiter in place of `/'; a
917                   `\' can be used to quote the delimiter inside l and r.  The
918                   character  `&'  in  the r is replaced by l; `\' also quotes
919                   `&'.  If l is empty (``''), the l from a previous substitu‐
920                   tion  or  the  s  from a previous search or event number in
921                   event specification is used.  The trailing delimiter may be
922                   omitted if it is immediately followed by a newline.
923           &       Repeat the previous substitution.
924           g       Apply the following modifier once to each word.
925           a (+)   Apply the following modifier as many times as possible to a
926                   single word.  `a' and `g' can be used together to  apply  a
927                   modifier  globally.   With  the `s' modifier, only the pat‐
928                   terns contained in the original word are  substituted,  not
929                   patterns that contain any substitution result.
930           p       Print the new command line but do not execute it.
931           q       Quote  the  substituted words, preventing further substitu‐
932                   tions.
933           Q       Same as q but in addition preserve  empty  variables  as  a
934                   string  containing a NUL.  This is useful to preserve posi‐
935                   tional arguments for example:
936                       > set args=('arg 1' '' 'arg 3')
937                       > tcsh -f -c 'echo ${#argv}' $args:gQ
938                       3
939           x       Like q, but break into words at blanks, tabs and newlines.
940
941       Modifiers are applied to only the first modifiable word (unless `g'  is
942       used).  It is an error for no word to be modifiable.
943
944       For  example,  the `diff' command might have been written as `diff wum‐
945       pus.man.old !#^:r', using `:r' to remove `.old' from the first argument
946       on  the  same  line (`!#^').  We could say `echo hello out there', then
947       `echo !*:u' to capitalize `hello', `echo !*:au' to say it out loud,  or
948       `echo  !*:agu'  to really shout.  We might follow `mail -s "I forgot my
949       password" rot' with `!:s/rot/root' to correct the  spelling  of  `root'
950       (but see Spelling correction for a different approach).
951
952       There is a special abbreviation for substitutions.  `^', when it is the
953       first character on an input line, is equivalent  to  `!:s^'.   Thus  we
954       might have said `^rot^root' to make the spelling correction in the pre‐
955       vious example.  This is the only history substitution  which  does  not
956       explicitly begin with `!'.
957
958       (+) In csh as such, only one modifier may be applied to each history or
959       variable expansion.  In tcsh, more than one may be used, for example
960
961           % mv wumpus.man /usr/man/man1/wumpus.1
962           % man !$:t:r
963           man wumpus
964
965       In csh, the result would be `wumpus.1:r'.  A substitution followed by a
966       colon may need to be insulated from it with braces:
967
968           > mv a.out /usr/games/wumpus
969           > setenv PATH !$:h:$PATH
970           Bad ! modifier: $.
971           > setenv PATH !{-2$:h}:$PATH
972           setenv PATH /usr/games:/bin:/usr/bin:.
973
974       The  first attempt would succeed in csh but fails in tcsh, because tcsh
975       expects another modifier after the second colon rather than `$'.
976
977       Finally, history can be accessed through the editor as well as  through
978       the  substitutions  just described.  The up- and down-history, history-
979       search-backward and -forward, i-search-back  and  -fwd,  vi-search-back
980       and  -fwd,  copy-prev-word  and insert-last-word editor commands search
981       for events in the history list and copy them  into  the  input  buffer.
982       The toggle-literal-history editor command switches between the expanded
983       and literal forms of history lines in the input buffer.  expand-history
984       and expand-line expand history substitutions in the current word and in
985       the entire input buffer respectively.
986
987   Alias substitution
988       The shell maintains a list of aliases  which  can  be  set,  unset  and
989       printed  by  the  alias  and unalias commands.  After a command line is
990       parsed into simple commands (see Commands) the first word of each  com‐
991       mand,  left-to-right, is checked to see if it has an alias.  If so, the
992       first word is replaced by the alias.  If the alias contains  a  history
993       reference, it undergoes History substitution (q.v.) as though the orig‐
994       inal command were the previous input line.  If the alias does not  con‐
995       tain a history reference, the argument list is left untouched.
996
997       Thus if the alias for `ls' were `ls -l' the command `ls /usr' would be‐
998       come `ls -l /usr', the argument list here being  undisturbed.   If  the
999       alias  for `lookup' were `grep !^ /etc/passwd' then `lookup bill' would
1000       become `grep bill /etc/passwd'.   Aliases  can  be  used  to  introduce
1001       parser metasyntax.  For example, `alias print 'pr \!* | lpr'' defines a
1002       ``command'' (`print') which pr(1)s its arguments to the line printer.
1003
1004       Alias substitution is repeated until the first word of the command  has
1005       no  alias.  If an alias substitution does not change the first word (as
1006       in the previous example) it is flagged to prevent a loop.  Other  loops
1007       are detected and cause an error.
1008
1009       Some aliases are referred to by the shell; see Special aliases.
1010
1011   Variable substitution
1012       The  shell  maintains a list of variables, each of which has as value a
1013       list of zero or more words.  The values of shell variables can be  dis‐
1014       played  and  changed with the set and unset commands.  The system main‐
1015       tains its own list of ``environment'' variables.   These  can  be  dis‐
1016       played and changed with printenv, setenv and unsetenv.
1017
1018       (+)  Variables  may  be made read-only with `set -r' (q.v.).  Read-only
1019       variables may not be modified or unset; attempting to do so will  cause
1020       an  error.  Once made read-only, a variable cannot be made writable, so
1021       `set -r' should be used with caution.  Environment variables cannot  be
1022       made read-only.
1023
1024       Some  variables  are  set  by  the shell or referred to by it.  For in‐
1025       stance, the argv variable is an image of the shell's argument list, and
1026       words  of  this variable's value are referred to in special ways.  Some
1027       of the variables referred to by the shell are toggles; the  shell  does
1028       not  care  what  their value is, only whether they are set or not.  For
1029       instance, the verbose variable is a toggle which causes  command  input
1030       to  be echoed.  The -v command line option sets this variable.  Special
1031       shell variables lists all variables which are referred to by the shell.
1032
1033       Other operations treat variables numerically.  The `@' command  permits
1034       numeric calculations to be performed and the result assigned to a vari‐
1035       able.  Variable values are, however, always  represented  as  (zero  or
1036       more) strings.  For the purposes of numeric operations, the null string
1037       is considered to be zero, and the second and subsequent words of multi-
1038       word values are ignored.
1039
1040       After  the input line is aliased and parsed, and before each command is
1041       executed, variable substitution is performed keyed by  `$'  characters.
1042       This  expansion can be prevented by preceding the `$' with a `\' except
1043       within `"'s where it always occurs, and within `''s where it never  oc‐
1044       curs.  Strings quoted by ``' are interpreted later (see Command substi‐
1045       tution below) so `$' substitution does not occur there until later,  if
1046       at all.  A `$' is passed unchanged if followed by a blank, tab, or end-
1047       of-line.
1048
1049       Input/output redirections are recognized before variable expansion, and
1050       are  variable expanded separately.  Otherwise, the command name and en‐
1051       tire argument list are expanded together.  It is thus possible for  the
1052       first  (command)  word  (to this point) to generate more than one word,
1053       the first of which becomes the command name, and the rest of which  be‐
1054       come arguments.
1055
1056       Unless  enclosed in `"' or given the `:q' modifier the results of vari‐
1057       able substitution may eventually be command and  filename  substituted.
1058       Within  `"',  a variable whose value consists of multiple words expands
1059       to a (portion of a) single word, with the words of the variable's value
1060       separated  by blanks.  When the `:q' modifier is applied to a substitu‐
1061       tion the variable will expand to multiple words with  each  word  sepa‐
1062       rated  by  a blank and quoted to prevent later command or filename sub‐
1063       stitution.
1064
1065       The following metasequences are provided for introducing variable  val‐
1066       ues into the shell input.  Except as noted, it is an error to reference
1067       a variable which is not set.
1068
1069       $name
1070       ${name} Substitutes the words of the value of variable name, each sepa‐
1071               rated  by a blank.  Braces insulate name from following charac‐
1072               ters which would otherwise be part of it.  Shell variables have
1073               names  consisting of letters and digits starting with a letter.
1074               The underscore character is considered a letter.   If  name  is
1075               not  a shell variable, but is set in the environment, then that
1076               value is returned (but some of the other forms given below  are
1077               not available in this case).
1078       $name[selector]
1079       ${name[selector]}
1080               Substitutes  only  the  selected  words from the value of name.
1081               The selector is subjected to `$' substitution and  may  consist
1082               of  a  single  number  or  two numbers separated by a `-'.  The
1083               first word of a variable's value is numbered `1'.  If the first
1084               number  of  a range is omitted it defaults to `1'.  If the last
1085               member of a range is omitted it defaults to `$#name'.  The  se‐
1086               lector  `*'  selects all words.  It is not an error for a range
1087               to be empty if the second argument is omitted or in range.
1088       $0      Substitutes the name of the file from which  command  input  is
1089               being read.  An error occurs if the name is not known.
1090       $number
1091       ${number}
1092               Equivalent to `$argv[number]'.
1093       $*      Equivalent to `$argv', which is equivalent to `$argv[*]'.
1094
1095       The  `:'  modifiers  described  under  History substitution, except for
1096       `:p', can be applied to the substitutions above.  More than one may  be
1097       used.   (+)  Braces  may  be needed to insulate a variable substitution
1098       from a literal colon just as with History substitution (q.v.); any mod‐
1099       ifiers must appear within the braces.
1100
1101       The following substitutions can not be modified with `:' modifiers.
1102
1103       $?name
1104       ${?name}
1105               Substitutes the string `1' if name is set, `0' if it is not.
1106       $?0     Substitutes  `1' if the current input filename is known, `0' if
1107               it is not.  Always `0' in interactive shells.
1108       $#name
1109       ${#name}
1110               Substitutes the number of words in name.
1111       $#      Equivalent to `$#argv'.  (+)
1112       $%name
1113       ${%name}
1114               Substitutes the number of characters in name.  (+)
1115       $%number
1116       ${%number}
1117               Substitutes the number of characters in $argv[number].  (+)
1118       $?      Equivalent to `$status'.  (+)
1119       $$      Substitutes the (decimal) process number of the (parent) shell.
1120       $!      Substitutes the (decimal) process number of the last background
1121               process started by this shell.  (+)
1122       $_      Substitutes the command line of the last command executed.  (+)
1123       $<      Substitutes a line from the standard input, with no further in‐
1124               terpretation thereafter.  It can be used to read from the  key‐
1125               board in a shell script.  (+) While csh always quotes $<, as if
1126               it were equivalent to `$<:q', tcsh does not.  Furthermore, when
1127               tcsh is waiting for a line to be typed the user may type an in‐
1128               terrupt to interrupt the sequence into which the line is to  be
1129               substituted, but csh does not allow this.
1130
1131       The  editor  command expand-variables, normally bound to `^X-$', can be
1132       used to interactively expand individual variables.
1133
1134   Command, filename and directory stack substitution
1135       The remaining substitutions are applied selectively to the arguments of
1136       builtin  commands.   This  means that portions of expressions which are
1137       not evaluated are not subjected  to  these  expansions.   For  commands
1138       which  are  not  internal to the shell, the command name is substituted
1139       separately from the argument list.  This occurs very late, after input-
1140       output redirection is performed, and in a child of the main shell.
1141
1142   Command substitution
1143       Command  substitution  is  indicated by a command enclosed in ``'.  The
1144       output from such a command is broken into  separate  words  at  blanks,
1145       tabs  and  newlines, and null words are discarded.  The output is vari‐
1146       able and command substituted and put in place of the original string.
1147
1148       Command substitutions inside double  quotes  (`"')  retain  blanks  and
1149       tabs; only newlines force new words.  The single final newline does not
1150       force a new word in any case.  It is thus possible for a  command  sub‐
1151       stitution  to  yield only part of a word, even if the command outputs a
1152       complete line.
1153
1154       By default, the shell since version 6.12 replaces all newline and  car‐
1155       riage  return characters in the command by spaces.  If this is switched
1156       off by unsetting csubstnonl, newlines separate commands as usual.
1157
1158   Filename substitution
1159       If a word contains any of the characters `*', `?', `[' or `{' or begins
1160       with  the  character  `~'  it is a candidate for filename substitution,
1161       also known as ``globbing''.  This word is then regarded  as  a  pattern
1162       (``glob-pattern''),  and replaced with an alphabetically sorted list of
1163       file names which match the pattern.
1164
1165       In matching filenames, the character `.' at the beginning of a filename
1166       or  immediately  following  a `/', as well as the character `/' must be
1167       matched explicitly (unless either  globdot  or  globstar  or  both  are
1168       set(+)).  The character `*' matches any string of characters, including
1169       the null string.  The character `?' matches any single character.   The
1170       sequence  `[...]'  matches  any one of the characters enclosed.  Within
1171       `[...]', a pair of characters separated by `-'  matches  any  character
1172       lexically between the two.
1173
1174       (+)  Some  glob-patterns  can be negated: The sequence `[^...]' matches
1175       any single character not specified by the characters and/or  ranges  of
1176       characters in the braces.
1177
1178       An entire glob-pattern can also be negated with `^':
1179
1180           > echo *
1181           bang crash crunch ouch
1182           > echo ^cr*
1183           bang ouch
1184
1185       Glob-patterns  which  do not use `?', `*', or `[]' or which use `{}' or
1186       `~' (below) are not negated correctly.
1187
1188       The metanotation `a{b,c,d}e' is a shorthand for `abe ace  ade'.   Left-
1189       to-right  order  is preserved: `/usr/source/s1/{oldls,ls}.c' expands to
1190       `/usr/source/s1/oldls.c /usr/source/s1/ls.c'.  The results  of  matches
1191       are   sorted  separately  at  a  low  level  to  preserve  this  order:
1192       `../{memo,*box}' might expand to `../memo ../box ../mbox'.  (Note  that
1193       `memo'  was not sorted with the results of matching `*box'.)  It is not
1194       an error when this construct expands to files which do not  exist,  but
1195       it  is  possible  to  get an error from a command to which the expanded
1196       list is passed.  This construct may be nested.  As a special  case  the
1197       words `{', `}' and `{}' are passed undisturbed.
1198
1199       The  character `~' at the beginning of a filename refers to home direc‐
1200       tories.  Standing alone, i.e., `~', it expands to  the  invoker's  home
1201       directory  as  reflected in the value of the home shell variable.  When
1202       followed by a name consisting of letters, digits and `-' characters the
1203       shell searches for a user with that name and substitutes their home di‐
1204       rectory; thus `~ken' might expand to `/usr/ken'  and  `~ken/chmach'  to
1205       `/usr/ken/chmach'.   If  the  character  `~' is followed by a character
1206       other than a letter or `/' or appears elsewhere than at  the  beginning
1207       of  a  word,  it  is  left undisturbed.  A command like `setenv MANPATH
1208       /usr/man:/usr/local/man:~/lib/man' does not, therefore, do home  direc‐
1209       tory substitution as one might hope.
1210
1211       It is an error for a glob-pattern containing `*', `?', `[' or `~', with
1212       or without `^', not to match any files.  However, only one pattern in a
1213       list  of  glob-patterns  must  match a file (so that, e.g., `rm *.a *.c
1214       *.o' would fail only if there were no files in  the  current  directory
1215       ending  in `.a', `.c', or `.o'), and if the nonomatch shell variable is
1216       set a pattern (or list of patterns) which matches nothing is  left  un‐
1217       changed rather than causing an error.
1218
1219       The globstar shell variable can be set to allow `**' or `***' as a file
1220       glob pattern that matches any string of characters including  `/',  re‐
1221       cursively  traversing  any  existing sub-directories.  For example, `ls
1222       **.c' will list all the .c files in the  current  directory  tree.   If
1223       used  by  itself,  it will match zero or more sub-directories (e.g. `ls
1224       /usr/include/**/time.h' will  list  any  file  named  `time.h'  in  the
1225       /usr/include  directory tree; `ls /usr/include/**time.h' will match any
1226       file in the /usr/include directory tree ending  in  `time.h';  and  `ls
1227       /usr/include/**time**.h' will match any .h file with `time' either in a
1228       subdirectory name or in the filename itself).  To prevent problems with
1229       recursion,  the `**' glob-pattern will not descend into a symbolic link
1230       containing a directory.  To override this, use `***' (+)
1231
1232       The noglob shell variable can be set to prevent filename  substitution,
1233       and  the  expand-glob  editor command, normally bound to `^X-*', can be
1234       used to interactively expand individual filename substitutions.
1235
1236   Directory stack substitution (+)
1237       The directory stack is a list of directories, numbered from zero,  used
1238       by  the  pushd, popd and dirs builtin commands (q.v.).  dirs can print,
1239       store in a file, restore and clear the directory stack at any time, and
1240       the  savedirs  and dirsfile shell variables can be set to store the di‐
1241       rectory stack automatically on logout and restore  it  on  login.   The
1242       dirstack  shell variable can be examined to see the directory stack and
1243       set to put arbitrary directories into the directory stack.
1244
1245       The character `=' followed by one or more digits expands to an entry in
1246       the  directory stack.  The special case `=-' expands to the last direc‐
1247       tory in the stack.  For example,
1248
1249           > dirs -v
1250           0       /usr/bin
1251           1       /usr/spool/uucp
1252           2       /usr/accts/sys
1253           > echo =1
1254           /usr/spool/uucp
1255           > echo =0/calendar
1256           /usr/bin/calendar
1257           > echo =-
1258           /usr/accts/sys
1259
1260       The noglob and nonomatch shell variables  and  the  expand-glob  editor
1261       command apply to directory stack as well as filename substitutions.
1262
1263   Other substitutions (+)
1264       There   are  several  more  transformations  involving  filenames,  not
1265       strictly related to the above but mentioned here for completeness.  Any
1266       filename  may  be  expanded  to  a full path when the symlinks variable
1267       (q.v.) is set to `expand'.  Quoting prevents this  expansion,  and  the
1268       normalize-path editor command does it on demand.  The normalize-command
1269       editor command expands commands in PATH into full paths on demand.  Fi‐
1270       nally, cd and pushd interpret `-' as the old working directory (equiva‐
1271       lent to the shell variable owd).  This is not a  substitution  at  all,
1272       but an abbreviation recognized by only those commands.  Nonetheless, it
1273       too can be prevented by quoting.
1274
1275   Commands
1276       The next three sections describe how the shell  executes  commands  and
1277       deals with their input and output.
1278
1279   Simple commands, pipelines and sequences
1280       A  simple  command is a sequence of words, the first of which specifies
1281       the command to be executed.  A series of simple commands joined by  `|'
1282       characters  forms a pipeline.  The output of each command in a pipeline
1283       is connected to the input of the next.
1284
1285       Simple commands and pipelines may be joined into  sequences  with  `;',
1286       and  will be executed sequentially.  Commands and pipelines can also be
1287       joined into sequences with `||' or `&&', indicating, as in the  C  lan‐
1288       guage,  that  the  second  is to be executed only if the first fails or
1289       succeeds respectively.
1290
1291       A simple command, pipeline or sequence may be  placed  in  parentheses,
1292       `()',  to  form a simple command, which may in turn be a component of a
1293       pipeline or sequence.  A command, pipeline or sequence can be  executed
1294       without waiting for it to terminate by following it with an `&'.
1295
1296   Builtin and non-builtin command execution
1297       Builtin  commands are executed within the shell.  If any component of a
1298       pipeline except the last is a builtin command, the pipeline is executed
1299       in a subshell.
1300
1301       Parenthesized commands are always executed in a subshell.
1302
1303           (cd; pwd); pwd
1304
1305       thus  prints  the  home directory, leaving you where you were (printing
1306       this after the home directory), while
1307
1308           cd; pwd
1309
1310       leaves you in the home directory.  Parenthesized commands are most  of‐
1311       ten used to prevent cd from affecting the current shell.
1312
1313       When  a command to be executed is found not to be a builtin command the
1314       shell attempts to execute the command via execve(2).  Each word in  the
1315       variable  path  names  a directory in which the shell will look for the
1316       command.  If the shell is not given a -f option, the shell  hashes  the
1317       names  in  these directories into an internal table so that it will try
1318       an execve(2) in only a directory where there is a possibility that  the
1319       command  resides  there.   This  greatly speeds command location when a
1320       large number of directories are present in the search path. This  hash‐
1321       ing mechanism is not used:
1322
1323       1.  If hashing is turned explicitly off via unhash.
1324
1325       2.  If the shell was given a -f argument.
1326
1327       3.  For  each  directory  component of path which does not begin with a
1328           `/'.
1329
1330       4.  If the command contains a `/'.
1331
1332       In the above four cases the shell concatenates each  component  of  the
1333       path  vector  with the given command name to form a path name of a file
1334       which it then attempts to execute it. If execution is  successful,  the
1335       search stops.
1336
1337       If  the  file  has  execute permissions but is not an executable to the
1338       system (i.e., it is neither an executable  binary  nor  a  script  that
1339       specifies  its interpreter), then it is assumed to be a file containing
1340       shell commands and a new shell is spawned to read it.  The  shell  spe‐
1341       cial  alias  may  be set to specify an interpreter other than the shell
1342       itself.
1343
1344       On systems which do not understand the `#!' script interpreter  conven‐
1345       tion  the  shell  may  be compiled to emulate it; see the version shell
1346       variable.  If so, the shell checks the first line of the file to see if
1347       it  is of the form `#!interpreter arg ...'.  If it is, the shell starts
1348       interpreter with the given args and feeds the file to  it  on  standard
1349       input.
1350
1351   Input/output
1352       The  standard  input and standard output of a command may be redirected
1353       with the following syntax:
1354
1355       < name  Open file name (which is first variable, command  and  filename
1356               expanded) as the standard input.
1357       << word Read  the  shell input up to a line which is identical to word.
1358               word is not subjected to variable, filename or command  substi‐
1359               tution, and each input line is compared to word before any sub‐
1360               stitutions are done on this input line.  Unless a quoting  `\',
1361               `"',  `'  or ``' appears in word variable and command substitu‐
1362               tion is performed on the intervening  lines,  allowing  `\'  to
1363               quote  `$',  `\'  and ``'.  Commands which are substituted have
1364               all blanks, tabs, and newlines preserved, except for the  final
1365               newline  which  is dropped.  The resultant text is placed in an
1366               anonymous temporary file which is given to the command as stan‐
1367               dard input.
1368       > name
1369       >! name
1370       >& name
1371       >&! name
1372               The file name is used as standard output.  If the file does not
1373               exist then it is created; if the file exists, it is  truncated,
1374               its previous contents being lost.
1375
1376               If  the shell variable noclobber is set, then the file must not
1377               exist or be a character  special  file  (e.g.,  a  terminal  or
1378               `/dev/null')  or an error results.  This helps prevent acciden‐
1379               tal destruction of files.  In this case the `!'  forms  can  be
1380               used  to  suppress this check.  If notempty is given in noclob‐
1381               ber, `>' is allowed on empty files;  if  ask  is  set,  an  in‐
1382               teracive confirmation is presented, rather than an error.
1383
1384               The  forms  involving  `&' route the diagnostic output into the
1385               specified file as well as the standard  output.   name  is  ex‐
1386               panded in the same way as `<' input filenames are.
1387       >> name
1388       >>& name
1389       >>! name
1390       >>&! name
1391               Like  `>', but appends output to the end of name.  If the shell
1392               variable noclobber is set, then it is an error for the file not
1393               to exist, unless one of the `!' forms is given.
1394
1395       A  command  receives  the environment in which the shell was invoked as
1396       modified by the input-output parameters and the presence of the command
1397       in  a pipeline.  Thus, unlike some previous shells, commands run from a
1398       file of shell commands have no access to the text of  the  commands  by
1399       default;  rather they receive the original standard input of the shell.
1400       The `<<' mechanism should be used to present inline data.  This permits
1401       shell command scripts to function as components of pipelines and allows
1402       the shell to block read its input.  Note that the default standard  in‐
1403       put for a command run detached is not the empty file /dev/null, but the
1404       original standard input of the shell.  If this is a terminal and if the
1405       process attempts to read from the terminal, then the process will block
1406       and the user will be notified (see Jobs).
1407
1408       Diagnostic output may be directed through a pipe with the standard out‐
1409       put.  Simply use the form `|&' rather than just `|'.
1410
1411       The  shell  cannot  presently  redirect  diagnostic output without also
1412       redirecting standard output, but `(command  >  output-file)  >&  error-
1413       file'  is often an acceptable workaround.  Either output-file or error-
1414       file may be `/dev/tty' to send output to the terminal.
1415
1416   Features
1417       Having described how the shell accepts,  parses  and  executes  command
1418       lines, we now turn to a variety of its useful features.
1419
1420   Control flow
1421       The  shell  contains a number of commands which can be used to regulate
1422       the flow of control in command files (shell scripts)  and  (in  limited
1423       but  useful  ways)  from terminal input.  These commands all operate by
1424       forcing the shell to reread or skip in its input and, due to the imple‐
1425       mentation, restrict the placement of some of the commands.
1426
1427       The  foreach, switch, and while statements, as well as the if-then-else
1428       form of the if statement, require that the major keywords appear  in  a
1429       single simple command on an input line as shown below.
1430
1431       If  the shell's input is not seekable, the shell buffers up input when‐
1432       ever a loop is being read and performs seeks in this internal buffer to
1433       accomplish the rereading implied by the loop.  (To the extent that this
1434       allows, backward gotos will succeed on non-seekable inputs.)
1435
1436   Expressions
1437       The if, while and exit builtin commands use expressions with  a  common
1438       syntax.   The expressions can include any of the operators described in
1439       the next three sections.  Note that the @ builtin  command  (q.v.)  has
1440       its own separate syntax.
1441
1442   Logical, arithmetical and comparison operators
1443       These operators are similar to those of C and have the same precedence.
1444       They include
1445
1446           ||  &&  |  ^  &  ==  !=  =~  !~  <=  >=
1447           <  > <<  >>  +  -  *  /  %  !  ~  (  )
1448
1449       Here the precedence increases to the right, `==' `!='  `=~'  and  `!~',
1450       `<='  `>=' `<' and `>', `<<' and `>>', `+' and `-', `*' `/' and `%' be‐
1451       ing, in groups, at the same level.  The `==' `!=' `=~' and `!~'  opera‐
1452       tors compare their arguments as strings; all others operate on numbers.
1453       The operators `=~' and `!~' are like `!='  and  `=='  except  that  the
1454       right  hand  side is a glob-pattern (see Filename substitution) against
1455       which the left hand operand is matched.  This reduces the need for  use
1456       of  the switch builtin command in shell scripts when all that is really
1457       needed is pattern matching.
1458
1459       Null or missing arguments are considered `0'.  The results of  all  ex‐
1460       pressions  are  strings, which represent decimal numbers.  It is impor‐
1461       tant to note that no two components of an expression can appear in  the
1462       same  word; except when adjacent to components of expressions which are
1463       syntactically significant to the parser (`&' `|' `<' `>' `(' `)')  they
1464       should be surrounded by spaces.
1465
1466   Command exit status
1467       Commands  can be executed in expressions and their exit status returned
1468       by enclosing them in braces (`{}').  Remember that the braces should be
1469       separated  from the words of the command by spaces.  Command executions
1470       succeed, returning true, i.e., `1', if the command exits with status 0,
1471       otherwise they fail, returning false, i.e., `0'.  If more detailed sta‐
1472       tus information is required then the command should be executed outside
1473       of an expression and the status shell variable examined.
1474
1475   File inquiry operators
1476       Some  of  these operators perform true/false tests on files and related
1477       objects.  They are of the form -op file, where op is one of
1478
1479           r   Read access
1480           w   Write access
1481           x   Execute access
1482           X   Executable in the path or shell builtin, e.g., `-X ls' and  `-X
1483               ls-F' are generally true, but `-X /bin/ls' is not (+)
1484           e   Existence
1485           o   Ownership
1486           z   Zero size
1487           s   Non-zero size (+)
1488           f   Plain file
1489           d   Directory
1490           l   Symbolic link (+) *
1491           b   Block special file (+)
1492           c   Character special file (+)
1493           p   Named pipe (fifo) (+) *
1494           S   Socket special file (+) *
1495           u   Set-user-ID bit is set (+)
1496           g   Set-group-ID bit is set (+)
1497           k   Sticky bit is set (+)
1498           t   file  (which  must be a digit) is an open file descriptor for a
1499               terminal device (+)
1500           R   Has been migrated (Convex only) (+)
1501           L   Applies subsequent operators in a multiple-operator test  to  a
1502               symbolic  link rather than to the file to which the link points
1503               (+) *
1504
1505       file is command and filename expanded and then tested to see if it  has
1506       the specified relationship to the real user.  If file does not exist or
1507       is inaccessible or, for the operators indicated by `*', if  the  speci‐
1508       fied file type does not exist on the current system, then all inquiries
1509       return false, i.e., `0'.
1510
1511       These operators may be combined for conciseness: `-xy file' is  equiva‐
1512       lent  to `-x file && -y file'.  (+) For example, `-fx' is true (returns
1513       `1') for plain executable files, but not for directories.
1514
1515       L may be used in a multiple-operator test to apply subsequent operators
1516       to  a  symbolic  link rather than to the file to which the link points.
1517       For example, `-lLo' is true for links owned by the invoking user.   Lr,
1518       Lw  and  Lx are always true for links and false for non-links.  L has a
1519       different meaning when it is the last operator in  a  multiple-operator
1520       test; see below.
1521
1522       It is possible but not useful, and sometimes misleading, to combine op‐
1523       erators which expect file to be a file  with  operators  which  do  not
1524       (e.g., X and t).  Following L with a non-file operator can lead to par‐
1525       ticularly strange results.
1526
1527       Other operators return other information, i.e., not just  `0'  or  `1'.
1528       (+) They have the same format as before; op may be one of
1529
1530           A       Last  file  access time, as the number of seconds since the
1531                   epoch
1532           A:      Like A, but in timestamp format, e.g., `Fri May 14 16:36:10
1533                   1993'
1534           M       Last file modification time
1535           M:      Like M, but in timestamp format
1536           C       Last inode modification time
1537           C:      Like C, but in timestamp format
1538           D       Device number
1539           I       Inode number
1540           F       Composite file identifier, in the form device:inode
1541           L       The name of the file pointed to by a symbolic link
1542           N       Number of (hard) links
1543           P       Permissions, in octal, without leading zero
1544           P:      Like P, with leading zero
1545           Pmode   Equivalent  to  `-P file & mode', e.g., `-P22 file' returns
1546                   `22' if file is writable by group and  other,  `20'  if  by
1547                   group only, and `0' if by neither
1548           Pmode:  Like Pmode, with leading zero
1549           U       Numeric userid
1550           U:      Username, or the numeric userid if the username is unknown
1551           G       Numeric groupid
1552           G:      Groupname,  or  the numeric groupid if the groupname is un‐
1553                   known
1554           Z       Size, in bytes
1555
1556       Only one of these operators may appear in a multiple-operator test, and
1557       it must be the last.  Note that L has a different meaning at the end of
1558       and elsewhere in a multiple-operator test.  Because `0' is a valid  re‐
1559       turn  value  for  many  of these operators, they do not return `0' when
1560       they fail: most return `-1', and F returns `:'.
1561
1562       If the shell is compiled with POSIX  defined  (see  the  version  shell
1563       variable), the result of a file inquiry is based on the permission bits
1564       of the file and not on the result of the access(2)  system  call.   For
1565       example, if one tests a file with -w whose permissions would ordinarily
1566       allow writing but which is on a file system mounted read-only, the test
1567       will succeed in a POSIX shell but fail in a non-POSIX shell.
1568
1569       File  inquiry operators can also be evaluated with the filetest builtin
1570       command (q.v.) (+).
1571
1572   Jobs
1573       The shell associates a job with each pipeline.  It  keeps  a  table  of
1574       current jobs, printed by the jobs command, and assigns them small inte‐
1575       ger numbers.  When a job is started asynchronously with `&', the  shell
1576       prints a line which looks like
1577
1578           [1] 1234
1579
1580       indicating that the job which was started asynchronously was job number
1581       1 and had one (top-level) process, whose process id was 1234.
1582
1583       If you are running a job and wish to do something else you may hit  the
1584       suspend  key  (usually  `^Z'), which sends a STOP signal to the current
1585       job.  The shell will then normally indicate that the job has been `Sus‐
1586       pended'  and  print  another prompt.  If the listjobs shell variable is
1587       set, all jobs will be listed like the jobs builtin command;  if  it  is
1588       set  to `long' the listing will be in long format, like `jobs -l'.  You
1589       can then manipulate the state of the suspended job.  You can put it  in
1590       the  ``background''  with the bg command or run some other commands and
1591       eventually bring the job back into the ``foreground''  with  fg.   (See
1592       also  the  run-fg-editor  editor command.)  A `^Z' takes effect immedi‐
1593       ately and is like an interrupt in that pending output and unread  input
1594       are  discarded  when  it is typed.  The wait builtin command causes the
1595       shell to wait for all background jobs to complete.
1596
1597       The `^]' key sends a delayed suspend signal, which does not generate  a
1598       STOP signal until a program attempts to read(2) it, to the current job.
1599       This can usefully be typed ahead when you have prepared  some  commands
1600       for  a job which you wish to stop after it has read them.  The `^Y' key
1601       performs this function in csh(1); in tcsh, `^Y' is an editing  command.
1602       (+)
1603
1604       A  job  being  run in the background stops if it tries to read from the
1605       terminal.  Background jobs are normally allowed to produce output,  but
1606       this  can  be disabled by giving the command `stty tostop'.  If you set
1607       this tty option, then background jobs will stop when they try  to  pro‐
1608       duce output like they do when they try to read input.
1609
1610       There  are  several  ways to refer to jobs in the shell.  The character
1611       `%' introduces a job name.  If you wish to refer to job number  1,  you
1612       can  name  it  as `%1'.  Just naming a job brings it to the foreground;
1613       thus `%1' is a synonym for `fg %1', bringing job 1 back into the  fore‐
1614       ground.  Similarly, saying `%1 &' resumes job 1 in the background, just
1615       like `bg %1'.  A job can also be named by an unambiguous prefix of  the
1616       string  typed  in to start it: `%ex' would normally restart a suspended
1617       ex(1) job, if there were only one suspended job whose name  began  with
1618       the  string  `ex'.   It is also possible to say `%?string' to specify a
1619       job whose text contains string, if there is only one such job.
1620
1621       The shell maintains a notion of the current and previous jobs.  In out‐
1622       put  pertaining  to  jobs, the current job is marked with a `+' and the
1623       previous job with a `-'.  The abbreviations `%+', `%', and (by  analogy
1624       with the syntax of the history mechanism) `%%' all refer to the current
1625       job, and `%-' refers to the previous job.
1626
1627       The job control mechanism requires that the stty(1) option `new' be set
1628       on  some systems.  It is an artifact from a `new' implementation of the
1629       tty driver which allows generation of  interrupt  characters  from  the
1630       keyboard  to tell jobs to stop.  See stty(1) and the setty builtin com‐
1631       mand for details on setting options in the new tty driver.
1632
1633   Status reporting
1634       The shell learns immediately whenever a process changes state.  It nor‐
1635       mally  informs  you  whenever  a job becomes blocked so that no further
1636       progress is possible, but only right before it prints a  prompt.   This
1637       is  done so that it does not otherwise disturb your work.  If, however,
1638       you set the shell variable notify, the shell will  notify  you  immedi‐
1639       ately  of  changes of status in background jobs.  There is also a shell
1640       command notify which marks a single process so that its status  changes
1641       will  be  immediately  reported.   By  default notify marks the current
1642       process; simply say `notify' after starting a background  job  to  mark
1643       it.
1644
1645       When  you  try  to  leave the shell while jobs are stopped, you will be
1646       warned that `There are suspended jobs.' You may use the jobs command to
1647       see  what  they  are.  If you do this or immediately try to exit again,
1648       the shell will not warn you a second time, and the suspended jobs  will
1649       be terminated.
1650
1651   Automatic, periodic and timed events (+)
1652       There are various ways to run commands and take other actions automati‐
1653       cally at various times in the ``life cycle'' of the  shell.   They  are
1654       summarized  here, and described in detail under the appropriate Builtin
1655       commands, Special shell variables and Special aliases.
1656
1657       The sched builtin command puts commands in a scheduled-event  list,  to
1658       be executed by the shell at a given time.
1659
1660       The  beepcmd,  cwdcmd,  periodic,  precmd,  postcmd, and jobcmd Special
1661       aliases can be set, respectively, to execute commands  when  the  shell
1662       wants  to ring the bell, when the working directory changes, every tpe‐
1663       riod minutes, before each prompt, before each  command  gets  executed,
1664       after  each  command  gets  executed,  and  when a job is started or is
1665       brought into the foreground.
1666
1667       The autologout shell variable can be set to log out or lock  the  shell
1668       after a given number of minutes of inactivity.
1669
1670       The mail shell variable can be set to check for new mail periodically.
1671
1672       The  printexitvalue  shell variable can be set to print the exit status
1673       of commands which exit with a status other than zero.
1674
1675       The rmstar shell variable can be set to ask the user, when  `rm  *'  is
1676       typed, if that is really what was meant.
1677
1678       The  time shell variable can be set to execute the time builtin command
1679       after the completion of any process that takes more than a given number
1680       of CPU seconds.
1681
1682       The  watch  and  who shell variables can be set to report when selected
1683       users log in or out, and the log builtin command reports on those users
1684       at any time.
1685
1686   Native Language System support (+)
1687       The  shell  is  eight  bit clean (if so compiled; see the version shell
1688       variable) and thus supports character  sets  needing  this  capability.
1689       NLS  support differs depending on whether or not the shell was compiled
1690       to use the system's NLS (again, see version).  In  either  case,  7-bit
1691       ASCII  is the default character code (e.g., the classification of which
1692       characters are  printable)  and  sorting,  and  changing  the  LANG  or
1693       LC_CTYPE  environment  variables causes a check for possible changes in
1694       these respects.
1695
1696       When using the system's NLS, the setlocale(3) function is called to de‐
1697       termine  appropriate character code/classification and sorting (e.g., a
1698       'en_CA.UTF-8' would yield "UTF-8" as a character code).  This  function
1699       typically  examines  the LANG and LC_CTYPE environment variables; refer
1700       to the system documentation for further details.  When  not  using  the
1701       system's  NLS,  the  shell simulates it by assuming that the ISO 8859-1
1702       character set is used whenever either of the LANG  and  LC_CTYPE  vari‐
1703       ables are set, regardless of their values.  Sorting is not affected for
1704       the simulated NLS.
1705
1706       In addition, with both real and simulated NLS, all printable characters
1707       in  the range \200-\377, i.e., those that have M-char bindings, are au‐
1708       tomatically rebound to self-insert-command.  The corresponding  binding
1709       for  the escape-char sequence, if any, is left alone.  These characters
1710       are not rebound if the NOREBIND environment variable is set.  This  may
1711       be  useful  for the simulated NLS or a primitive real NLS which assumes
1712       full ISO 8859-1.  Otherwise, all M-char bindings in the range \240-\377
1713       are  effectively  undone.   Explicitly rebinding the relevant keys with
1714       bindkey is of course still possible.
1715
1716       Unknown characters (i.e., those that are neither printable nor  control
1717       characters) are printed in the format \nnn.  If the tty is not in 8 bit
1718       mode, other 8 bit characters are printed by converting  them  to  ASCII
1719       and  using  standout mode.  The shell never changes the 7/8 bit mode of
1720       the tty and tracks user-initiated changes of 7/8 bit mode.   NLS  users
1721       (or, for that matter, those who want to use a meta key) may need to ex‐
1722       plicitly set the tty in 8 bit mode through the appropriate stty(1) com‐
1723       mand in, e.g., the ~/.login file.
1724
1725   OS variant support (+)
1726       A  number  of  new builtin commands are provided to support features in
1727       particular operating systems.  All  are  described  in  detail  in  the
1728       Builtin commands section.
1729
1730       On  systems  that  support  TCF  (aix-ibm370,  aix-ps2),  getspath  and
1731       setspath get and set the system execution path, getxvers  and  setxvers
1732       get  and  set the experimental version prefix and migrate migrates pro‐
1733       cesses between sites.  The jobs builtin prints the site on  which  each
1734       job is executing.
1735
1736       Under BS2000, bs2cmd executes commands of the underlying BS2000/OSD op‐
1737       erating system.
1738
1739       Under Domain/OS, inlib adds shared libraries to  the  current  environ‐
1740       ment, rootnode changes the rootnode and ver changes the systype.
1741
1742       Under Mach, setpath is equivalent to Mach's setpath(1).
1743
1744       Under Masscomp/RTU and Harris CX/UX, universe sets the universe.
1745
1746       Under  Harris CX/UX, ucb or att runs a command under the specified uni‐
1747       verse.
1748
1749       Under Convex/OS, warp prints or sets the universe.
1750
1751       The VENDOR, OSTYPE and MACHTYPE environment variables indicate  respec‐
1752       tively  the  vendor,  operating system and machine type (microprocessor
1753       class or machine model) of the system on which the shell thinks  it  is
1754       running.   These are particularly useful when sharing one's home direc‐
1755       tory between several types of machines; one can, for example,
1756
1757           set path = (~/bin.$MACHTYPE /usr/ucb /bin /usr/bin .)
1758
1759       in one's ~/.login and put executables compiled for each machine in  the
1760       appropriate directory.
1761
1762       The  version shell variable indicates what options were chosen when the
1763       shell was compiled.
1764
1765       Note also the newgrp builtin, the afsuser and  echo_style  shell  vari‐
1766       ables  and  the  system-dependent  locations of the shell's input files
1767       (see FILES).
1768
1769   Signal handling
1770       Login shells ignore interrupts when reading the  file  ~/.logout.   The
1771       shell  ignores quit signals unless started with -q.  Login shells catch
1772       the terminate signal, but non-login shells inherit the terminate behav‐
1773       ior  from their parents.  Other signals have the values which the shell
1774       inherited from its parent.
1775
1776       In shell scripts, the shell's handling of interrupt and terminate  sig‐
1777       nals  can be controlled with onintr, and its handling of hangups can be
1778       controlled with hup and nohup.
1779
1780       The shell exits on a hangup (see also the logout shell  variable).   By
1781       default,  the shell's children do too, but the shell does not send them
1782       a hangup when it exits.  hup arranges for the shell to send a hangup to
1783       a child when it exits, and nohup sets a child to ignore hangups.
1784
1785   Terminal management (+)
1786       The  shell  uses  three  different  sets  of  terminal (``tty'') modes:
1787       `edit', used when editing, `quote', used when quoting  literal  charac‐
1788       ters,  and  `execute',  used  when executing commands.  The shell holds
1789       some settings in each mode constant, so commands which leave the tty in
1790       a  confused  state  do  not  interfere  with the shell.  The shell also
1791       matches changes in the speed and padding of the tty.  The list  of  tty
1792       modes  that  are  kept  constant  can be examined and modified with the
1793       setty builtin.  Note that although the editor uses CBREAK mode (or  its
1794       equivalent), it takes typed-ahead characters anyway.
1795
1796       The echotc, settc and telltc commands can be used to manipulate and de‐
1797       bug terminal capabilities from the command line.
1798
1799       On systems that support SIGWINCH or SIGWINDOW, the shell adapts to win‐
1800       dow  resizing automatically and adjusts the environment variables LINES
1801       and COLUMNS if set.  If the environment variable TERMCAP  contains  li#
1802       and co# fields, the shell adjusts them to reflect the new window size.
1803

REFERENCE

1805       The  next sections of this manual describe all of the available Builtin
1806       commands, Special aliases and Special shell variables.
1807
1808   Builtin commands
1809       %job    A synonym for the fg builtin command.
1810
1811       %job &  A synonym for the bg builtin command.
1812
1813       :       Does nothing, successfully.
1814
1815       @
1816       @ name = expr
1817       @ name[index] = expr
1818       @ name++|--
1819       @ name[index]++|--
1820               The first form prints the values of all shell variables.
1821
1822               The second form assigns the value of expr to name.   The  third
1823               form  assigns  the  value  of expr to the index'th component of
1824               name; both name and its index'th component must already exist.
1825
1826               expr may contain the operators `*', `+', etc.,  as  in  C.   If
1827               expr  contains  `<',  `>', `&' or `' then at least that part of
1828               expr must be placed within `()'.  Note that the syntax of  expr
1829               has nothing to do with that described under Expressions.
1830
1831               The fourth and fifth forms increment (`++') or decrement (`--')
1832               name or its index'th component.
1833
1834               The space between `@' and name is required.  The spaces between
1835               name and `=' and between `=' and expr are optional.  Components
1836               of expr must be separated by spaces.
1837
1838       alias [name [wordlist]]
1839               Without arguments, prints all aliases.  With name,  prints  the
1840               alias  for  name.   With name and wordlist, assigns wordlist as
1841               the alias of name.  wordlist is command  and  filename  substi‐
1842               tuted.  name may not be `alias' or `unalias'.  See also the un‐
1843               alias builtin command.
1844
1845       alloc   Shows the amount of dynamic memory acquired, broken  down  into
1846               used  and  free  memory.   With an argument shows the number of
1847               free and used blocks in each  size  category.   The  categories
1848               start at size 8 and double at each step.  This command's output
1849               may vary across system types, because systems  other  than  the
1850               VAX may use a different memory allocator.
1851
1852       bg [%job ...]
1853               Puts  the  specified  jobs  (or, without arguments, the current
1854               job) into the background, continuing each  if  it  is  stopped.
1855               job may be a number, a string, `', `%', `+' or `-' as described
1856               under Jobs.
1857
1858       bindkey [-l|-d|-e|-v|-u] (+)
1859       bindkey [-a] [-b] [-k] [-r] [--] key (+)
1860       bindkey [-a] [-b] [-k] [-c|-s] [--] key command (+)
1861               Without options, the first form lists all bound  keys  and  the
1862               editor  command  to  which each is bound, the second form lists
1863               the editor command to which key is bound  and  the  third  form
1864               binds the editor command command to key.  Options include:
1865
1866               -l  Lists all editor commands and a short description of each.
1867               -d  Binds all keys to the standard bindings for the default ed‐
1868                   itor, as per -e and -v below.
1869               -e  Binds all keys to emacs(1)-style bindings.  Unsets vimode.
1870               -v  Binds all keys to vi(1)-style bindings.  Sets vimode.
1871               -a  Lists or changes key-bindings in the alternative  key  map.
1872                   This is the key map used in vimode command mode.
1873               -b  key  is interpreted as a control character written ^charac‐
1874                   ter (e.g., `^A') or C-character (e.g., `C-A'), a meta char‐
1875                   acter  written  M-character  (e.g.,  `M-A'), a function key
1876                   written F-string (e.g., `F-string'), or an extended  prefix
1877                   key written X-character (e.g., `X-A').
1878               -k  key  is interpreted as a symbolic arrow key name, which may
1879                   be one of `down', `up', `left' or `right'.
1880               -r  Removes key's binding.  Be careful: `bindkey -r'  does  not
1881                   bind key to self-insert-command (q.v.), it unbinds key com‐
1882                   pletely.
1883               -c  command is interpreted as a builtin or external command in‐
1884                   stead of an editor command.
1885               -s  command  is taken as a literal string and treated as termi‐
1886                   nal input when key is typed.  Bound  keys  in  command  are
1887                   themselves reinterpreted, and this continues for ten levels
1888                   of interpretation.
1889               --  Forces a break from option processing, so the next word  is
1890                   taken as key even if it begins with '-'.
1891               -u (or any invalid option)
1892                   Prints a usage message.
1893
1894               key  may  be  a  single character or a string.  If a command is
1895               bound to a string, the first character of the string  is  bound
1896               to  sequence-lead-in and the entire string is bound to the com‐
1897               mand.
1898
1899               Control characters in key can be literal (they can be typed  by
1900               preceding  them with the editor command quoted-insert, normally
1901               bound to `^V') or written caret-character  style,  e.g.,  `^A'.
1902               Delete is written `^?'  (caret-question mark).  key and command
1903               can contain backslashed escape sequences (in the style of  Sys‐
1904               tem V echo(1)) as follows:
1905
1906                   \a      Bell
1907                   \b      Backspace
1908                   \e      Escape
1909                   \f      Form feed
1910                   \n      Newline
1911                   \r      Carriage return
1912                   \t      Horizontal tab
1913                   \v      Vertical tab
1914                   \nnn    The ASCII character corresponding to the octal num‐
1915                           ber nnn
1916
1917               `\' nullifies the special meaning of the  following  character,
1918               if it has any, notably `\' and `^'.
1919
1920       bs2cmd bs2000-command (+)
1921               Passes bs2000-command to the BS2000 command interpreter for ex‐
1922               ecution. Only non-interactive commands can be executed, and  it
1923               is  not  possible to execute any command that would overlay the
1924               image of the current process, like /EXECUTE or /CALL-PROCEDURE.
1925               (BS2000 only)
1926
1927       break   Causes execution to resume after the end of the nearest enclos‐
1928               ing foreach or while.  The remaining commands  on  the  current
1929               line  are  executed.   Multi-level  breaks are thus possible by
1930               writing them all on one line.
1931
1932       breaksw Causes a break from a switch, resuming after the endsw.
1933
1934       builtins (+)
1935               Prints the names of all builtin commands.
1936
1937       bye (+) A synonym for the logout builtin command.   Available  only  if
1938               the shell was so compiled; see the version shell variable.
1939
1940       case label:
1941               A label in a switch statement as discussed below.
1942
1943       cd [-p] [-l] [-n|-v] [I--] [name]
1944               If  a  directory name is given, changes the shell's working di‐
1945               rectory to name.  If not, changes to home, unless the  cdtohome
1946               variable is not set, in which case a name is required.  If name
1947               is `-' it is interpreted as the previous working directory (see
1948               Other substitutions).  (+) If name is not a subdirectory of the
1949               current directory (and does not begin with `/', `./' or `../'),
1950               each  component  of the variable cdpath is checked to see if it
1951               has a subdirectory name.  Finally, if all else fails  but  name
1952               is  a  shell  variable whose value begins with `/' or '.', then
1953               this is tried to see if it is a directory, and the -p option is
1954               implied.
1955
1956               With -p, prints the final directory stack, just like dirs.  The
1957               -l, -n and -v flags have the same effect on cd as on dirs,  and
1958               they  imply  -p.   (+) Using -- forces a break from option pro‐
1959               cessing so the next word is taken as the directory name even if
1960               it begins with '-'. (+)
1961
1962               See also the implicitcd and cdtohome shell variables.
1963
1964       chdir   A synonym for the cd builtin command.
1965
1966       complete [command [word/pattern/list[:select]/[[suffix]/] ...]] (+)
1967               Without  arguments, lists all completions.  With command, lists
1968               completions for command.  With command and word  etc.,  defines
1969               completions.
1970
1971               command may be a full command name or a glob-pattern (see File‐
1972               name substitution).  It can begin with  `-'  to  indicate  that
1973               completion should be used only when command is ambiguous.
1974
1975               word specifies which word relative to the current word is to be
1976               completed, and may be one of the following:
1977
1978                   c   Current-word completion.   pattern  is  a  glob-pattern
1979                       which  must  match the beginning of the current word on
1980                       the command line.  pattern is ignored  when  completing
1981                       the current word.
1982                   C   Like  c,  but includes pattern when completing the cur‐
1983                       rent word.
1984                   n   Next-word completion.  pattern is a glob-pattern  which
1985                       must  match  the  beginning of the previous word on the
1986                       command line.
1987                   N   Like n, but must match the beginning of  the  word  two
1988                       before the current word.
1989                   p   Position-dependent  completion.   pattern  is a numeric
1990                       range, with the same syntax used to index  shell  vari‐
1991                       ables, which must include the current word.
1992
1993               list,  the list of possible completions, may be one of the fol‐
1994               lowing:
1995
1996                   a       Aliases
1997                   b       Bindings (editor commands)
1998                   c       Commands (builtin or external commands)
1999                   C       External commands which  begin  with  the  supplied
2000                           path prefix
2001                   d       Directories
2002                   D       Directories which begin with the supplied path pre‐
2003                           fix
2004                   e       Environment variables
2005                   f       Filenames
2006                   F       Filenames which begin with the supplied path prefix
2007                   g       Groupnames
2008                   j       Jobs
2009                   l       Limits
2010                   n       Nothing
2011                   s       Shell variables
2012                   S       Signals
2013                   t       Plain (``text'') files
2014                   T       Plain (``text'') files which begin  with  the  sup‐
2015                           plied path prefix
2016                   v       Any variables
2017                   u       Usernames
2018                   x       Like  n,  but  prints  select  when list-choices is
2019                           used.
2020                   X       Completions
2021                   $var    Words from the variable var
2022                   (...)   Words from the given list
2023                   `...`   Words from the output of command
2024
2025               select is an optional glob-pattern.  If given, words from  only
2026               list  that  match  select  are considered and the fignore shell
2027               variable is ignored.  The last three types  of  completion  may
2028               not  have a select pattern, and x uses select as an explanatory
2029               message when the list-choices editor command is used.
2030
2031               suffix is a single character to be  appended  to  a  successful
2032               completion.  If null, no character is appended.  If omitted (in
2033               which case the fourth delimiter can also be omitted),  a  slash
2034               is appended to directories and a space to other words.
2035
2036               command  invoked  from `...` version has additional environment
2037               variable set, the variable name is  COMMAND_LINE  and  contains
2038               (as  its name indicates) contents of the current (already typed
2039               in) command line. One can  examine  and  use  contents  of  the
2040               COMMAND_LINE  variable  in  her custom script to build more so‐
2041               phisticated completions (see completion for svn(1) included  in
2042               this package).
2043
2044               Now  for some examples.  Some commands take only directories as
2045               arguments, so there's no point completing plain files.
2046
2047                   > complete cd 'p/1/d/'
2048
2049               completes only the first word following `cd' (`p/1') with a di‐
2050               rectory.   p-type  completion  can  also be used to narrow down
2051               command completion:
2052
2053                   > co[^D]
2054                   complete compress
2055                   > complete -co* 'p/0/(compress)/'
2056                   > co[^D]
2057                   > compress
2058
2059               This completion completes commands (words in position 0, `p/0')
2060               which  begin with `co' (thus matching `co*') to `compress' (the
2061               only word in the list).  The leading `-'  indicates  that  this
2062               completion is to be used with only ambiguous commands.
2063
2064                   > complete find 'n/-user/u/'
2065
2066               is  an example of n-type completion.  Any word following `find'
2067               and immediately following `-user' is completed from the list of
2068               users.
2069
2070                   > complete cc 'c/-I/d/'
2071
2072               demonstrates  c-type  completion.   Any word following `cc' and
2073               beginning with `-I' is completed as a directory.  `-I'  is  not
2074               taken as part of the directory because we used lowercase c.
2075
2076               Different lists are useful with different commands.
2077
2078                   > complete alias 'p/1/a/'
2079                   > complete man 'p/*/c/'
2080                   > complete set 'p/1/s/'
2081                   > complete true 'p/1/x:Truth has no options./'
2082
2083               These complete words following `alias' with aliases, `man' with
2084               commands, and `set' with shell variables.  `true' doesn't  have
2085               any options, so x does nothing when completion is attempted and
2086               prints `Truth has no  options.'  when  completion  choices  are
2087               listed.
2088
2089               Note  that  the  man example, and several other examples below,
2090               could just as well have used 'c/*' or 'n/*' as 'p/*'.
2091
2092               Words can be completed from a variable evaluated at  completion
2093               time,
2094
2095                   > complete ftp 'p/1/$hostnames/'
2096                   > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu)
2097                   > ftp [^D]
2098                   rtfm.mit.edu tesla.ee.cornell.edu
2099                   > ftp [^C]
2100                   >   set   hostnames  =  (rtfm.mit.edu  tesla.ee.cornell.edu
2101                   uunet.uu.net)
2102                   > ftp [^D]
2103                   rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net
2104
2105               or from a command run at completion time:
2106
2107                   > complete kill 'p/*/`ps | awk \{print\ \$1\}`/'
2108                   > kill -9 [^D]
2109                   23113 23377 23380 23406 23429 23529 23530 PID
2110
2111               Note that the complete command does not itself quote its  argu‐
2112               ments,  so  the  braces,  space and `$' in `{print $1}' must be
2113               quoted explicitly.
2114
2115               One command can have multiple completions:
2116
2117                   > complete dbx 'p/2/(core)/' 'p/*/c/'
2118
2119               completes the second argument to `dbx' with the word `core' and
2120               all  other  arguments  with commands.  Note that the positional
2121               completion is specified before the next-word  completion.   Be‐
2122               cause  completions  are  evaluated  from  left to right, if the
2123               next-word completion were specified first it would always match
2124               and the positional completion would never be executed.  This is
2125               a common mistake when defining a completion.
2126
2127               The select pattern is useful when a command  takes  files  with
2128               only particular forms as arguments.  For example,
2129
2130                   > complete cc 'p/*/f:*.[cao]/'
2131
2132               completes `cc' arguments to files ending in only `.c', `.a', or
2133               `.o'.  select can also exclude files, using negation of a glob-
2134               pattern  as  described  under Filename substitution.  One might
2135               use
2136
2137                   > complete rm 'p/*/f:^*.{c,h,cc,C,tex,1,man,l,y}/'
2138
2139               to exclude precious  source  code  from  `rm'  completion.   Of
2140               course,  one  could still type excluded names manually or over‐
2141               ride the completion mechanism using  the  complete-word-raw  or
2142               list-choices-raw editor commands (q.v.).
2143
2144               The  `C', `D', `F' and `T' lists are like `c', `d', `f' and `t'
2145               respectively, but they use the select argument in  a  different
2146               way:  to restrict completion to files beginning with a particu‐
2147               lar path prefix.  For example, the Elm mail program uses `=' as
2148               an abbreviation for one's mail directory.  One might use
2149
2150                   > complete elm c@=@F:$HOME/Mail/@
2151
2152               to  complete  `elm  -f =' as if it were `elm -f ~/Mail/'.  Note
2153               that we used `@' instead of `/' to avoid confusion with the se‐
2154               lect  argument, and we used `$HOME' instead of `~' because home
2155               directory substitution works at only the beginning of a word.
2156
2157               suffix is used to add a nonstandard suffix (not  space  or  `/'
2158               for directories) to completed words.
2159
2160                   > complete finger 'c/*@/$hostnames/' 'p/1/u/@'
2161
2162               completes arguments to `finger' from the list of users, appends
2163               an `@', and then completes after the `@' from  the  `hostnames'
2164               variable.   Note  again  the order in which the completions are
2165               specified.
2166
2167               Finally, here's a complex example for inspiration:
2168
2169                   > complete find \
2170                   'n/-name/f/' 'n/-newer/f/' 'n/-{,n}cpio/f/' \
2171                   ´n/-exec/c/' 'n/-ok/c/' 'n/-user/u/' \
2172                   'n/-group/g/' 'n/-fstype/(nfs 4.2)/' \
2173                   'n/-type/(b c d f l p s)/' \
2174                   ´c/-/(name newer cpio ncpio exec ok user \
2175                   group fstype type atime ctime depth inum \
2176                   ls mtime nogroup nouser perm print prune \
2177                   size xdev)/' \
2178                   'p/*/d/'
2179
2180               This completes words following `-name',  `-newer',  `-cpio'  or
2181               `ncpio'  (note  the pattern which matches both) to files, words
2182               following `-exec' or `-ok' to commands, words following  `user'
2183               and  `group' to users and groups respectively and words follow‐
2184               ing `-fstype' or `-type' to members of  the  given  lists.   It
2185               also  completes  the  switches  themselves  from the given list
2186               (note the use of c-type completion) and completes anything  not
2187               otherwise completed to a directory.  Whew.
2188
2189               Remember  that  programmed  completions are ignored if the word
2190               being completed is a tilde substitution (beginning with `~') or
2191               a  variable  (beginning  with  `$').   See  also the uncomplete
2192               builtin command.
2193
2194       continue
2195               Continues execution of the nearest enclosing while or  foreach.
2196               The rest of the commands on the current line are executed.
2197
2198       default:
2199               Labels  the default case in a switch statement.  It should come
2200               after all case labels.
2201
2202       dirs [-l] [-n|-v]
2203       dirs -S|-L [filename] (+)
2204       dirs -c (+)
2205               The first form prints the directory  stack.   The  top  of  the
2206               stack  is  at  the left and the first directory in the stack is
2207               the current directory.  With -l, `~' or `~name' in  the  output
2208               is  expanded explicitly to home or the pathname of the home di‐
2209               rectory for user name.  (+) With -n, entries are wrapped before
2210               they  reach  the  edge of the screen.  (+) With -v, entries are
2211               printed one per line, preceded by their stack  positions.   (+)
2212               If more than one of -n or -v is given, -v takes precedence.  -p
2213               is accepted but does nothing.
2214
2215               With -S, the second form saves the directory stack to  filename
2216               as  a  series  of  cd  and  pushd commands.  With -L, the shell
2217               sources filename, which is presumably a  directory  stack  file
2218               saved  by  the  -S option or the savedirs mechanism.  In either
2219               case, dirsfile is used if filename is not given and  ~/.cshdirs
2220               is used if dirsfile is unset.
2221
2222               Note  that  login  shells  do  the  equivalent  of `dirs -L' on
2223               startup and, if savedirs is set, `dirs -S' before exiting.  Be‐
2224               cause  only  ~/.tcshrc  is  normally sourced before ~/.cshdirs,
2225               dirsfile should be set in ~/.tcshrc rather than ~/.login.
2226
2227               The last form clears the directory stack.
2228
2229       echo [-n] word ...
2230               Writes each word to the shell's standard output,  separated  by
2231               spaces  and  terminated  with  a newline.  The echo_style shell
2232               variable may be set to emulate (or not) the  flags  and  escape
2233               sequences  of  the  BSD  and/or  System V versions of echo; see
2234               echo(1).
2235
2236       echotc [-sv] arg ... (+)
2237               Exercises the terminal capabilities (see termcap(5))  in  args.
2238               For  example,  'echotc home' sends the cursor to the home posi‐
2239               tion, 'echotc cm 3 10' sends it to column 3  and  row  10,  and
2240               'echotc  ts  0; echo "This is a test."; echotc fs' prints "This
2241               is a test."  in the status line.
2242
2243               If arg is 'baud', 'cols', 'lines', 'meta' or 'tabs', prints the
2244               value  of  that  capability  ("yes" or "no" indicating that the
2245               terminal does or does not have that capability).  One might use
2246               this  to  make  the  output from a shell script less verbose on
2247               slow terminals, or limit command output to the number of  lines
2248               on the screen:
2249
2250                   > set history=`echotc lines`
2251                   > @ history--
2252
2253               Termcap  strings may contain wildcards which will not echo cor‐
2254               rectly.  One should use double  quotes  when  setting  a  shell
2255               variable  to  a terminal capability string, as in the following
2256               example that places the date in the status line:
2257
2258                   > set tosl="`echotc ts 0`"
2259                   > set frsl="`echotc fs`"
2260                   > echo -n "$tosl";date; echo -n "$frsl"
2261
2262               With -s,  nonexistent  capabilities  return  the  empty  string
2263               rather than causing an error.  With -v, messages are verbose.
2264
2265       else
2266       end
2267       endif
2268       endsw   See  the  description  of  the  foreach,  if, switch, and while
2269               statements below.
2270
2271       eval arg ...
2272               Treats the arguments as input to the shell and executes the re‐
2273               sulting  command(s)  in the context of the current shell.  This
2274               is usually used to execute commands generated as the result  of
2275               command or variable substitution, because parsing occurs before
2276               these substitutions.  See tset(1) for a sample use of eval.
2277
2278       exec command
2279               Executes the specified command in place of the current shell.
2280
2281       exit [expr]
2282               The shell exits either with the value of the specified expr (an
2283               expression,  as  described under Expressions) or, without expr,
2284               with the value 0.
2285
2286       fg [%job ...]
2287               Brings the specified jobs (or, without arguments,  the  current
2288               job)  into  the  foreground,  continuing each if it is stopped.
2289               job may be a number, a string, `', `%', `+' or `-' as described
2290               under Jobs.  See also the run-fg-editor editor command.
2291
2292       filetest -op file ... (+)
2293               Applies op (which is a file inquiry operator as described under
2294               File inquiry operators) to each file and returns the results as
2295               a space-separated list.
2296
2297       foreach name (wordlist)
2298       ...
2299       end     Successively  sets the variable name to each member of wordlist
2300               and executes the sequence of commands between this command  and
2301               the  matching  end.  (Both foreach and end must appear alone on
2302               separate lines.)  The builtin command continue may be  used  to
2303               continue  the loop prematurely and the builtin command break to
2304               terminate it prematurely.  When this command is read  from  the
2305               terminal,  the loop is read once prompting with `foreach? ' (or
2306               prompt2) before any statements in the loop  are  executed.   If
2307               you make a mistake typing in a loop at the terminal you can rub
2308               it out.
2309
2310       getspath (+)
2311               Prints the system execution path.  (TCF only)
2312
2313       getxvers (+)
2314               Prints the experimental version prefix.  (TCF only)
2315
2316       glob wordlist
2317               Like echo, but the `-n' parameter is not recognized  and  words
2318               are  delimited  by  null  characters in the output.  Useful for
2319               programs which wish to use the shell to filename expand a  list
2320               of words.
2321
2322       goto word
2323               word  is  filename and command-substituted to yield a string of
2324               the form `label'.  The shell rewinds its input as much as  pos‐
2325               sible,  searches for a line of the form `label:', possibly pre‐
2326               ceded by blanks or tabs, and  continues  execution  after  that
2327               line.
2328
2329       hashstat
2330               Prints  a statistics line indicating how effective the internal
2331               hash table has been at locating commands (and avoiding exec's).
2332               An  exec  is attempted for each component of the path where the
2333               hash function indicates a possible hit, and in  each  component
2334               which does not begin with a `/'.
2335
2336               On  machines  without vfork(2), prints only the number and size
2337               of hash buckets.
2338
2339       history [-hTr] [n]
2340       history -S|-L|-M [filename] (+)
2341       history -c (+)
2342               The first form prints the history event list.  If  n  is  given
2343               only  the  n most recent events are printed or saved.  With -h,
2344               the history list is printed without leading numbers.  If -T  is
2345               specified,  timestamps are printed also in comment form.  (This
2346               can be used to produce files suitable for loading with 'history
2347               -L'  or  'source  -h'.)  With -r, the order of printing is most
2348               recent first rather than oldest first.
2349
2350               With -S, the second form saves the history  list  to  filename.
2351               If  the  first  word of the savehist shell variable is set to a
2352               number, at most that many lines are saved.  If the second  word
2353               of  savehist is set to `merge', the history list is merged with
2354               the existing history file instead of replacing it (if there  is
2355               one)  and sorted by time stamp.  (+) Merging is intended for an
2356               environment like the X Window System with several shells in si‐
2357               multaneous  use.  If the second word of savehist is `merge' and
2358               the third word is set to `lock', the history file  update  will
2359               be  serialized  with  other  shell sessions that would possibly
2360               like to merge history at exactly the same time.
2361
2362               With -L, the shell appends filename, which is presumably a his‐
2363               tory  list saved by the -S option or the savehist mechanism, to
2364               the history list.  -M is like -L, but the contents of  filename
2365               are  merged  into the history list and sorted by timestamp.  In
2366               either case, histfile is used if  filename  is  not  given  and
2367               ~/.history  is  used if histfile is unset.  `history -L' is ex‐
2368               actly like 'source -h' except that it does not require a  file‐
2369               name.
2370
2371               Note  that  login  shells  do the equivalent of `history -L' on
2372               startup and, if savehist is set, `history -S'  before  exiting.
2373               Because  only  ~/.tcshrc is normally sourced before ~/.history,
2374               histfile should be set in ~/.tcshrc rather than ~/.login.
2375
2376               If histlit is set, the first and second forms  print  and  save
2377               the literal (unexpanded) form of the history list.
2378
2379               The last form clears the history list.
2380
2381       hup [command] (+)
2382               With  command,  runs command such that it will exit on a hangup
2383               signal and arranges for the shell to send it  a  hangup  signal
2384               when the shell exits.  Note that commands may set their own re‐
2385               sponse to hangups, overriding hup.  Without an argument, causes
2386               the  non-interactive shell only to exit on a hangup for the re‐
2387               mainder of the script.  See also Signal handling and the  nohup
2388               builtin command.
2389
2390       if (expr) command
2391               If  expr (an expression, as described under Expressions) evalu‐
2392               ates true, then command is executed.  Variable substitution  on
2393               command happens early, at the same time it does for the rest of
2394               the if command.  command must  be  a  simple  command,  not  an
2395               alias,  a  pipeline,  a command list or a parenthesized command
2396               list, but it may have arguments.  Input/output redirection  oc‐
2397               curs  even  if  expr is false and command is thus not executed;
2398               this is a bug.
2399
2400       if (expr) then
2401       ...
2402       else if (expr2) then
2403       ...
2404       else
2405       ...
2406       endif   If the specified expr is true then the commands  to  the  first
2407               else are executed; otherwise if expr2 is true then the commands
2408               to the second else are executed, etc.  Any  number  of  else-if
2409               pairs are possible; only one endif is needed.  The else part is
2410               likewise optional.  (The words else and endif  must  appear  at
2411               the  beginning  of input lines; the if must appear alone on its
2412               input line or after an else.)
2413
2414       inlib shared-library ... (+)
2415               Adds each shared-library to the current environment.  There  is
2416               no way to remove a shared library.  (Domain/OS only)
2417
2418       jobs [-l]
2419               Lists  the active jobs.  With -l, lists process IDs in addition
2420               to the normal information.  On TCF systems, prints the site  on
2421               which each job is executing.
2422
2423       kill [-s signal] %job|pid ...
2424       kill -l The  first  and second forms sends the specified signal (or, if
2425               none is given, the TERM (terminate) signal)  to  the  specified
2426               jobs or processes.  job may be a number, a string, `', `%', `+'
2427               or `-' as described under Jobs.  Signals are  either  given  by
2428               number  or by name (as given in /usr/include/signal.h, stripped
2429               of the prefix `SIG').  There is no  default  job;  saying  just
2430               `kill'  does not send a signal to the current job.  If the sig‐
2431               nal being sent is TERM (terminate) or HUP  (hangup),  then  the
2432               job  or  process is sent a CONT (continue) signal as well.  The
2433               third form lists the signal names.
2434
2435       limit [-h] [resource [maximum-use]]
2436               Limits the consumption by the current process and each  process
2437               it creates to not individually exceed maximum-use on the speci‐
2438               fied resource.  If no maximum-use is given,  then  the  current
2439               limit is printed; if no resource is given, then all limitations
2440               are given.  If the -h flag is given, the hard limits  are  used
2441               instead  of the current limits.  The hard limits impose a ceil‐
2442               ing on the values of the current limits.  Only  the  super-user
2443               may  raise  the  hard limits, but a user may lower or raise the
2444               current limits within the legal range.
2445
2446               Controllable resources currently include (if supported  by  the
2447               OS):
2448
2449               cputime
2450                      the  maximum  number  of  cpu-seconds to be used by each
2451                      process
2452
2453               filesize
2454                      the largest single file which can be created
2455
2456               datasize
2457                      the maximum growth of the data+stack region via  sbrk(2)
2458                      beyond the end of the program text
2459
2460               stacksize
2461                      the maximum size of the automatically-extended stack re‐
2462                      gion
2463
2464               coredumpsize
2465                      the size of the largest core dump that will be created
2466
2467               memoryuse
2468                      the maximum amount of physical memory a process may have
2469                      allocated to it at a given time
2470
2471                      NOTE:  Changing  this  value  has no effect. Support has
2472                      been removed from Linux kernel v2.6 and newer.
2473
2474               vmemoryuse
2475                      the maximum amount of virtual memory a process may  have
2476                      allocated to it at a given time (address space)
2477
2478               vmemoryuse
2479                      the  maximum amount of virtual memory a process may have
2480                      allocated to it at a given time
2481
2482               heapsize
2483                      the maximum amount of memory a process may allocate  per
2484                      brk() system call
2485
2486               descriptors or openfiles
2487                      the maximum number of open files for this process
2488
2489               pseudoterminals
2490                      the maximum number of pseudo-terminals for this user
2491
2492               kqueues
2493                      the maximum number of kqueues allocated for this process
2494
2495               concurrency
2496                      the maximum number of threads for this process
2497
2498               memorylocked
2499                      the  maximum  size  which a process may lock into memory
2500                      using mlock(2)
2501
2502               maxproc
2503                      the maximum number of simultaneous  processes  for  this
2504                      user id
2505
2506               maxthread
2507                      the  maximum number of simultaneous threads (lightweight
2508                      processes) for this user id
2509
2510               threads
2511                      the maximum number of threads for this process
2512
2513               sbsize the maximum size of socket buffer usage for this user
2514
2515               swapsize
2516                      the maximum amount of swap space reserved  or  used  for
2517                      this user
2518
2519               maxlocks
2520                      the maximum number of locks for this user
2521
2522               posixlocks
2523                      the maximum number of POSIX advisory locks for this user
2524
2525               maxsignal
2526                      the maximum number of pending signals for this user
2527
2528               maxmessage
2529                      the  maximum  number  of bytes in POSIX mqueues for this
2530                      user
2531
2532               maxnice
2533                      the maximum nice priority the user is allowed  to  raise
2534                      mapped from [19...-20] to [0...39] for this user
2535
2536               maxrtprio
2537                      the  maximum  realtime  priority for this user maxrttime
2538                      the timeout for RT tasks in microseconds for this user.
2539
2540               maximum-use may be given as a (floating point or integer)  num‐
2541               ber  followed  by  a  scale  factor.  For all limits other than
2542               cputime the default scale is `k' or `kilobytes' (1024 bytes); a
2543               scale  factor  of  `m' or `megabytes' or `g' or `gigabytes' may
2544               also be used.  For cputime the default  scaling  is  `seconds',
2545               while  `m'  for minutes or `h' for hours, or a time of the form
2546               `mm:ss' giving minutes and seconds may be used.
2547
2548               If maximum-use  is `unlimited',  then  the  limitation  on  the
2549               specified  resource  is  removed (this is equivalent to the un‐
2550               limit builtin command).
2551
2552               For both resource names and scale factors, unambiguous prefixes
2553               of the names suffice.
2554
2555       log (+) Prints  the watch shell variable and reports on each user indi‐
2556               cated in watch who is logged in, regardless of when  they  last
2557               logged in.  See also watchlog.
2558
2559       login   Terminates  a  login  shell,  replacing  it with an instance of
2560               /bin/login. This is one way to log off, included  for  compati‐
2561               bility with sh(1).
2562
2563       logout  Terminates  a  login  shell.  Especially useful if ignoreeof is
2564               set.
2565
2566       ls-F [-switch ...] [file ...] (+)
2567               Lists files like `ls -F', but much faster.  It identifies  each
2568               type of special file in the listing with a special character:
2569
2570               /   Directory
2571               *   Executable
2572               #   Block device
2573               %   Character device
2574               |   Named pipe (systems with named pipes only)
2575               =   Socket (systems with sockets only)
2576               @   Symbolic link (systems with symbolic links only)
2577               +   Hidden  directory  (AIX  only)  or context dependent (HP/UX
2578                   only)
2579               :   Network special (HP/UX only)
2580
2581               If the listlinks shell variable  is  set,  symbolic  links  are
2582               identified  in  more detail (on only systems that have them, of
2583               course):
2584
2585               @   Symbolic link to a non-directory
2586               >   Symbolic link to a directory
2587               &   Symbolic link to nowhere
2588
2589               listlinks also slows down ls-F and  causes  partitions  holding
2590               files pointed to by symbolic links to be mounted.
2591
2592               If  the  listflags shell variable is set to `x', `a' or `A', or
2593               any combination thereof (e.g., `xA'), they are used as flags to
2594               ls-F, making it act like `ls -xF', `ls -Fa', `ls -FA' or a com‐
2595               bination (e.g., `ls -FxA').  On machines where `ls -C'  is  not
2596               the default, ls-F acts like `ls -CF', unless listflags contains
2597               an `x', in which case it acts like `ls -xF'.  ls-F  passes  its
2598               arguments  to  ls(1)  if it is given any switches, so `alias ls
2599               ls-F' generally does the right thing.
2600
2601               The ls-F builtin can list files using different colors  depend‐
2602               ing on the filetype or extension.  See the color shell variable
2603               and the LS_COLORS environment variable.
2604
2605       migrate [-site] pid|%jobid ... (+)
2606       migrate -site (+)
2607               The first form migrates the process or job to the  site  speci‐
2608               fied  or  the  default site determined by the system path.  The
2609               second form is equivalent to `migrate -site  $$':  it  migrates
2610               the current process to the specified site.  Migrating the shell
2611               itself can cause unexpected behavior, because  the  shell  does
2612               not like to lose its tty.  (TCF only)
2613
2614       newgrp [-] [group] (+)
2615               Equivalent  to `exec newgrp'; see newgrp(1).  Available only if
2616               the shell was so compiled; see the version shell variable.
2617
2618       nice [+number] [command]
2619               Sets the scheduling priority for the shell to number, or, with‐
2620               out  number, to 4.  With command, runs command at the appropri‐
2621               ate priority.  The greater the number, the less cpu the process
2622               gets.   The  super-user  may specify negative priority by using
2623               `nice -number ...'.  Command is always executed in a sub-shell,
2624               and the restrictions placed on commands in simple if statements
2625               apply.
2626
2627       nohup [command]
2628               With command, runs command such that it will ignore hangup sig‐
2629               nals.   Note  that  commands  may  set  their  own  response to
2630               hangups, overriding nohup.  Without  an  argument,  causes  the
2631               non-interactive  shell only to ignore hangups for the remainder
2632               of the script.  See also Signal handling and  the  hup  builtin
2633               command.
2634
2635       notify [%job ...]
2636               Causes  the  shell  to  notify the user asynchronously when the
2637               status of any of the specified jobs (or, without %job, the cur‐
2638               rent  job) changes, instead of waiting until the next prompt as
2639               is usual.  job may be a number, a string, `', `%', `+'  or  `-'
2640               as described under Jobs.  See also the notify shell variable.
2641
2642       onintr [-|label]
2643               Controls  the action of the shell on interrupts.  Without argu‐
2644               ments, restores the default action of the shell on  interrupts,
2645               which  is to terminate shell scripts or to return to the termi‐
2646               nal command input level.  With `-', causes all interrupts to be
2647               ignored.   With  label, causes the shell to execute a `goto la‐
2648               bel' when an interrupt is received or a  child  process  termi‐
2649               nates because it was interrupted.
2650
2651               onintr  is ignored if the shell is running detached and in sys‐
2652               tem startup files (see FILES), where  interrupts  are  disabled
2653               anyway.
2654
2655       popd [-p] [-l] [-n|-v] [+n]
2656               Without  arguments, pops the directory stack and returns to the
2657               new top directory.  With a number `+n', discards the n'th entry
2658               in the stack.
2659
2660               Finally,  all  forms  of  popd print the final directory stack,
2661               just like dirs.  The pushdsilent shell variable can be  set  to
2662               prevent  this and the -p flag can be given to override pushdsi‐
2663               lent.  The -l, -n and -v flags have the same effect on popd  as
2664               on dirs.  (+)
2665
2666       printenv [name] (+)
2667               Prints  the  names  and values of all environment variables or,
2668               with name, the value of the environment variable name.
2669
2670       pushd [-p] [-l] [-n|-v] [name|+n]
2671               Without arguments, exchanges the top two elements of the direc‐
2672               tory  stack.   If  pushdtohome  is set, pushd without arguments
2673               does `pushd ~', like cd.  (+) With  name,  pushes  the  current
2674               working directory onto the directory stack and changes to name.
2675               If name is `-' it is interpreted as the previous working direc‐
2676               tory (see Filename substitution).  (+) If dunique is set, pushd
2677               removes any instances of name from the stack before pushing  it
2678               onto  the  stack.  (+) With a number `+n', rotates the nth ele‐
2679               ment of the directory stack around to be the  top  element  and
2680               changes  to  it.   If  dextract is set, however, `pushd +n' ex‐
2681               tracts the nth directory, pushes it onto the top of  the  stack
2682               and changes to it.  (+)
2683
2684               Finally,  all  forms  of pushd print the final directory stack,
2685               just like dirs.  The pushdsilent shell variable can be  set  to
2686               prevent  this and the -p flag can be given to override pushdsi‐
2687               lent.  The -l, -n and -v flags have the same effect on pushd as
2688               on dirs.  (+)
2689
2690       rehash  Causes  the internal hash table of the contents of the directo‐
2691               ries in the path variable to be recomputed.  This is needed  if
2692               the  autorehash  shell variable is not set and new commands are
2693               added to directories in path while you are logged in.  With au‐
2694               torehash,  a new command will be found automatically, except in
2695               the special case where another command of the same  name  which
2696               is  located in a different directory already exists in the hash
2697               table.  Also flushes the cache of  home  directories  built  by
2698               tilde expansion.
2699
2700       repeat count command
2701               The  specified  command,  which is subject to the same restric‐
2702               tions as the command in the one line if statement above, is ex‐
2703               ecuted  count times.  I/O redirections occur exactly once, even
2704               if count is 0.
2705
2706       rootnode //nodename (+)
2707               Changes the rootnode to //nodename, so that `/' will be  inter‐
2708               preted as `//nodename'.  (Domain/OS only)
2709
2710       sched (+)
2711       sched [+]hh:mm command (+)
2712       sched -n (+)
2713               The  first  form  prints  the  scheduled-event list.  The sched
2714               shell variable may be set to define the  format  in  which  the
2715               scheduled-event  list is printed.  The second form adds command
2716               to the scheduled-event list.  For example,
2717
2718                   > sched 11:00 echo It\'s eleven o\'clock.
2719
2720               causes the shell to echo `It's eleven o'clock.' at 11 AM.   The
2721               time may be in 12-hour AM/PM format
2722
2723                   > sched 5pm set prompt='[%h] It\'s after 5; go home: >'
2724
2725               or may be relative to the current time:
2726
2727                   > sched +2:15 /usr/lib/uucp/uucico -r1 -sother
2728
2729               A  relative  time  specification may not use AM/PM format.  The
2730               third form removes item n from the event list:
2731
2732                   > sched
2733                        1  Wed Apr  4 15:42  /usr/lib/uucp/uucico -r1 -sother
2734                        2  Wed Apr  4 17:00  set prompt=[%h] It's after 5;  go
2735                   home: >
2736                   > sched -2
2737                   > sched
2738                        1  Wed Apr  4 15:42  /usr/lib/uucp/uucico -r1 -sother
2739
2740               A  command  in the scheduled-event list is executed just before
2741               the first prompt is printed after the time when the command  is
2742               scheduled.  It is possible to miss the exact time when the com‐
2743               mand is to be run, but an overdue command will execute  at  the
2744               next  prompt.   A  command  which  comes due while the shell is
2745               waiting for user input is executed immediately.  However,  nor‐
2746               mal  operation of an already-running command will not be inter‐
2747               rupted so that a scheduled-event list element may be run.
2748
2749               This mechanism is similar to, but not the same  as,  the  at(1)
2750               command  on  some Unix systems.  Its major disadvantage is that
2751               it may not run a command at exactly the  specified  time.   Its
2752               major  advantage  is  that because sched runs directly from the
2753               shell, it has access to shell variables and  other  structures.
2754               This  provides  a mechanism for changing one's working environ‐
2755               ment based on the time of day.
2756
2757       set
2758       set name ...
2759       set name=word ...
2760       set [-r] [-f|-l] name=(wordlist) ... (+)
2761       set name[index]=word ...
2762       set -r (+)
2763       set -r name ... (+)
2764       set -r name=word ... (+)
2765               The first form of the command prints the  value  of  all  shell
2766               variables.   Variables  which  contain  more than a single word
2767               print as a parenthesized word list.  The second form sets  name
2768               to  the  null  string.   The third form sets name to the single
2769               word.  The fourth form sets  name  to  the  list  of  words  in
2770               wordlist.   In  all cases the value is command and filename ex‐
2771               panded.  If -r is specified, the value is set read-only.  If -f
2772               or -l are specified, set only unique words keeping their order.
2773               -f prefers the first occurrence of a word,  and  -l  the  last.
2774               The  fifth  form  sets  the index'th component of name to word;
2775               this component must already exist.  The sixth form  lists  only
2776               the  names of all shell variables that are read-only.  The sev‐
2777               enth form makes name read-only, whether or not it has a  value.
2778               The  eighth  form  is the same as the third form, but make name
2779               read-only at the same time.
2780
2781               These arguments can be repeated to set  and/or  make  read-only
2782               multiple  variables  in  a  single set command.  Note, however,
2783               that variable expansion happens for all  arguments  before  any
2784               setting  occurs.   Note  also  that `=' can be adjacent to both
2785               name and word or separated from both by whitespace, but  cannot
2786               be  adjacent  to  only  one  or  the other.  See also the unset
2787               builtin command.
2788
2789       setenv [name [value]]
2790               Without arguments, prints the names and values of all  environ‐
2791               ment variables.  Given name, sets the environment variable name
2792               to value or, without value, to the null string.
2793
2794       setpath path (+)
2795               Equivalent to setpath(1).  (Mach only)
2796
2797       setspath LOCAL|site|cpu ... (+)
2798               Sets the system execution path.  (TCF only)
2799
2800       settc cap value (+)
2801               Tells the shell to believe that the terminal capability cap (as
2802               defined in termcap(5)) has the value value.  No sanity checking
2803               is done.  Concept terminal users may have to `settc xn  no'  to
2804               get proper wrapping at the rightmost column.
2805
2806       setty [-d|-q|-x] [-a] [[+|-]mode] (+)
2807               Controls  which  tty  modes (see Terminal management) the shell
2808               does not allow to change.  -d, -q or -x tells setty to  act  on
2809               the `edit', `quote' or `execute' set of tty modes respectively;
2810               without -d, -q or -x, `execute' is used.
2811
2812               Without other arguments, setty lists the modes  in  the  chosen
2813               set  which are fixed on (`+mode') or off (`-mode').  The avail‐
2814               able modes, and thus the display, vary from system  to  system.
2815               With  -a,  lists all tty modes in the chosen set whether or not
2816               they are fixed.  With +mode, -mode or mode, fixes  mode  on  or
2817               off  or removes control from mode in the chosen set.  For exam‐
2818               ple, `setty +echok echoe' fixes `echok' mode on and allows com‐
2819               mands  to  turn  `echoe' mode on or off, both when the shell is
2820               executing commands.
2821
2822       setxvers [string] (+)
2823               Set the experimental version prefix to string, or removes it if
2824               string is omitted.  (TCF only)
2825
2826       shift [variable]
2827               Without  arguments,  discards argv[1] and shifts the members of
2828               argv to the left.  It is an error for argv not to be set or  to
2829               have  less than one word as value.  With variable, performs the
2830               same function on variable.
2831
2832       source [-h] name [args ...]
2833               The shell reads and executes commands from name.  The  commands
2834               are  not  placed  on  the history list.  If any args are given,
2835               they are placed in argv.  (+) source commands may be nested; if
2836               they  are  nested  too deeply the shell may run out of file de‐
2837               scriptors.  An error in a source at any  level  terminates  all
2838               nested  source  commands.   With -h, commands are placed on the
2839               history list instead of being executed, much like `history -L'.
2840
2841       stop %job|pid ...
2842               Stops the specified jobs or processes which  are  executing  in
2843               the background.  job may be a number, a string, `', `%', `+' or
2844               `-' as described under Jobs.  There is no default  job;  saying
2845               just `stop' does not stop the current job.
2846
2847       suspend Causes  the shell to stop in its tracks, much as if it had been
2848               sent a stop signal with ^Z.  This is most often  used  to  stop
2849               shells started by su(1).
2850
2851       switch (string)
2852       case str1:
2853           ...
2854           breaksw
2855       ...
2856       default:
2857           ...
2858           breaksw
2859       endsw   Each  case label is successively matched, against the specified
2860               string which is first command and filename expanded.  The  file
2861               metacharacters  `*',  `?'  and `[...]'  may be used in the case
2862               labels, which are variable expanded.  If  none  of  the  labels
2863               match before a `default' label is found, then the execution be‐
2864               gins after the default label.  Each case label and the  default
2865               label  must  appear  at  the  beginning of a line.  The command
2866               breaksw causes execution to continue after the  endsw.   Other‐
2867               wise control may fall through case labels and default labels as
2868               in C.  If no label matches and there is no  default,  execution
2869               continues after the endsw.
2870
2871       telltc (+)
2872               Lists the values of all terminal capabilities (see termcap(5)).
2873
2874       termname [terminal type] (+)
2875               Tests if terminal type (or the current value of TERM if no ter‐
2876               minal type is given) has an entry in the  hosts  termcap(5)  or
2877               terminfo(5)  database.  Prints  the terminal type to stdout and
2878               returns 0 if an entry is present otherwise returns 1.
2879
2880       time [command]
2881               Executes command (which must be a simple command, not an alias,
2882               a pipeline, a command list or a parenthesized command list) and
2883               prints a time summary as described under the time variable.  If
2884               necessary,  an extra shell is created to print the time statis‐
2885               tic when the command completes.  Without command, prints a time
2886               summary for the current shell and its children.
2887
2888       umask [value]
2889               Sets  the file creation mask to value, which is given in octal.
2890               Common values for the mask are 002, giving all  access  to  the
2891               group  and  read  and execute access to others, and 022, giving
2892               read and execute access  to  the  group  and  others.   Without
2893               value, prints the current file creation mask.
2894
2895       unalias pattern
2896               Removes  all  aliases  whose  names match pattern.  `unalias *'
2897               thus removes all aliases.  It is not an error for nothing to be
2898               unaliased.
2899
2900       uncomplete pattern (+)
2901               Removes all completions whose names match pattern.  `uncomplete
2902               *' thus removes all completions.  It is not an error for  noth‐
2903               ing to be uncompleted.
2904
2905       unhash  Disables  use  of  the internal hash table to speed location of
2906               executed programs.
2907
2908       universe universe (+)
2909               Sets the universe to universe.  (Masscomp/RTU only)
2910
2911       unlimit [-hf] [resource]
2912               Removes the limitation on resource or, if no resource is speci‐
2913               fied,  all  resource  limitations.   With -h, the corresponding
2914               hard limits are removed.  Only  the  super-user  may  do  this.
2915               Note  that  unlimit may not exit successful, since most systems
2916               do not allow descriptors to be unlimited.  With -f  errors  are
2917               ignored.
2918
2919       unset pattern
2920               Removes  all  variables  whose names match pattern, unless they
2921               are read-only.  `unset *' thus  removes  all  variables  unless
2922               they are read-only; this is a bad idea.  It is not an error for
2923               nothing to be unset.
2924
2925       unsetenv pattern
2926               Removes all environment variables whose  names  match  pattern.
2927               `unsetenv  *' thus removes all environment variables; this is a
2928               bad idea.  It is not an error for nothing to be unsetenved.
2929
2930       ver [systype [command]] (+)
2931               Without arguments, prints SYSTYPE.  With systype, sets  SYSTYPE
2932               to  systype.   With systype and command, executes command under
2933               systype.  systype may  be  `bsd4.3'  or  `sys5.3'.   (Domain/OS
2934               only)
2935
2936       wait    The  shell  waits for all background jobs.  If the shell is in‐
2937               teractive, an interrupt will disrupt the  wait  and  cause  the
2938               shell  to  print  the  names and job numbers of all outstanding
2939               jobs.
2940
2941       warp universe (+)
2942               Sets the universe to universe.  (Convex/OS only)
2943
2944       watchlog (+)
2945               An alternate name for the log builtin command  (q.v.).   Avail‐
2946               able  only  if the shell was so compiled; see the version shell
2947               variable.
2948
2949       where command (+)
2950               Reports all known  instances  of  command,  including  aliases,
2951               builtins and executables in path.
2952
2953       which command (+)
2954               Displays  the  command that will be executed by the shell after
2955               substitutions, path searching, etc.   The  builtin  command  is
2956               just  like  which(1), but it correctly reports tcsh aliases and
2957               builtins and is 10 to 100 times faster.  See  also  the  which-
2958               command editor command.
2959
2960       while (expr)
2961       ...
2962       end     Executes  the  commands  between the while and the matching end
2963               while expr (an  expression,  as  described  under  Expressions)
2964               evaluates  non-zero.   while and end must appear alone on their
2965               input lines.  break and continue may be used  to  terminate  or
2966               continue the loop prematurely.  If the input is a terminal, the
2967               user is prompted the first time through the loop as with  fore‐
2968               ach.
2969
2970   Special aliases (+)
2971       If  set,  each of these aliases executes automatically at the indicated
2972       time.  They are all initially undefined.
2973
2974       beepcmd Runs when the shell wants to ring the terminal bell.
2975
2976       cwdcmd  Runs after every change of working directory.  For example,  if
2977               the  user is working on an X window system using xterm(1) and a
2978               re-parenting window manager that supports title  bars  such  as
2979               twm(1) and does
2980
2981                   > alias cwdcmd  'echo -n "^[]2;${HOST}:$cwd ^G"'
2982
2983               then the shell will change the title of the running xterm(1) to
2984               be the name of the host, a colon, and the full current  working
2985               directory.  A fancier way to do that is
2986
2987                   >          alias          cwdcmd          'echo          -n
2988                   "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"'
2989
2990               This will put the hostname and working directory on  the  title
2991               bar but only the hostname in the icon manager menu.
2992
2993               Note  that  putting  a cd, pushd or popd in cwdcmd may cause an
2994               infinite loop.  It is the author's opinion that anyone doing so
2995               will get what they deserve.
2996
2997       jobcmd  Runs  before  each  command  gets executed, or when the command
2998               changes state.  This is similar to postcmd,  but  it  does  not
2999               print builtins.
3000
3001                   > alias jobcmd  'echo -n "^[]2\;\!#:q^G"'
3002
3003               then  executing  vi  foo.c  will  put the command string in the
3004               xterm title bar.
3005
3006       helpcommand
3007               Invoked by the run-help editor command.  The command  name  for
3008               which  help is sought is passed as sole argument.  For example,
3009               if one does
3010
3011                   > alias helpcommand '\!:1 --help'
3012
3013               then the help display of the command itself  will  be  invoked,
3014               using  the  GNU help calling convention.  Currently there is no
3015               easy way to account for various calling conventions (e.g.,  the
3016               customary Unix `-h'), except by using a table of many commands.
3017
3018       periodic
3019               Runs  every  tperiod minutes.  This provides a convenient means
3020               for checking on common but infrequent changes such as new mail.
3021               For example, if one does
3022
3023                   > set tperiod = 30
3024                   > alias periodic checknews
3025
3026               then  the checknews(1) program runs every 30 minutes.  If peri‐
3027               odic is set but tperiod is unset or set to 0, periodic  behaves
3028               like precmd.
3029
3030       precmd  Runs  just  before each prompt is printed.  For example, if one
3031               does
3032
3033                   > alias precmd date
3034
3035               then date(1) runs just before the shell prompts for  each  com‐
3036               mand.  There are no limits on what precmd can be set to do, but
3037               discretion should be used.
3038
3039       postcmd Runs before each command gets executed.
3040
3041                   > alias postcmd  'echo -n "^[]2\;\!#:q^G"'
3042
3043               then executing vi foo.c will put  the  command  string  in  the
3044               xterm title bar.
3045
3046       shell   Specifies  the  interpreter for executable scripts which do not
3047               themselves specify an interpreter.  The first word should be  a
3048               full  path name to the desired interpreter (e.g., `/bin/csh' or
3049               `/usr/local/bin/tcsh').
3050
3051   Special shell variables
3052       The variables described in this section have  special  meaning  to  the
3053       shell.
3054
3055       The  shell  sets  addsuffix,  argv,  autologout,  csubstnonl,  command,
3056       echo_style,  edit,  gid,  group,  home,  loginsh,  oid,  path,  prompt,
3057       prompt2,  prompt3, shell, shlvl, tcsh, term, tty, uid, user and version
3058       at startup; they do not change thereafter unless changed by  the  user.
3059       The  shell  updates  cwd,  dirstack, owd and status when necessary, and
3060       sets logout on logout.
3061
3062       The shell synchronizes group, home, path, shlvl, term and user with the
3063       environment variables of the same names: whenever the environment vari‐
3064       able changes the shell changes  the  corresponding  shell  variable  to
3065       match  (unless  the  shell variable is read-only) and vice versa.  Note
3066       that although cwd and PWD have identical meanings, they  are  not  syn‐
3067       chronized in this manner, and that the shell automatically converts be‐
3068       tween the different formats of path and PATH.
3069
3070       addsuffix (+)
3071               If set, filename completion adds `/' to the end of  directories
3072               and  a  space  to the end of normal files when they are matched
3073               exactly.  Set by default.
3074
3075       afsuser (+)
3076               If set, autologout's autolock feature uses its value instead of
3077               the local username for kerberos authentication.
3078
3079       ampm (+)
3080               If set, all times are shown in 12-hour AM/PM format.
3081
3082       anyerror (+)
3083               This  variable  selects  what is propagated to the value of the
3084               status variable. For more information see  the  description  of
3085               the status variable below.
3086
3087       argv    The  arguments  to  the shell.  Positional parameters are taken
3088               from argv, i.e., `$1' is replaced by `$argv[1]', etc.   Set  by
3089               default, but usually empty in interactive shells.
3090
3091       autocorrect (+)
3092               If  set, the spell-word editor command is invoked automatically
3093               before each completion attempt.
3094
3095       autoexpand (+)
3096               If set, the expand-history editor command is invoked  automati‐
3097               cally  before  each completion attempt. If this is set to only‐
3098               history, then only history will be expanded and a  second  com‐
3099               pletion will expand filenames.
3100
3101       autolist (+)
3102               If set, possibilities are listed after an ambiguous completion.
3103               If set to `ambiguous', possibilities are listed  only  when  no
3104               new characters are added by completion.
3105
3106       autologout (+)
3107               The  first  word  is the number of minutes of inactivity before
3108               automatic logout.  The optional second word is  the  number  of
3109               minutes of inactivity before automatic locking.  When the shell
3110               automatically logs out, it prints `auto-logout', sets the vari‐
3111               able logout to `automatic' and exits.  When the shell automati‐
3112               cally locks, the user is required to enter his password to con‐
3113               tinue working.  Five incorrect attempts result in automatic lo‐
3114               gout.  Set to `60' (automatic logout after 60 minutes,  and  no
3115               locking)  by  default in login and superuser shells, but not if
3116               the shell thinks it is running under a window system (i.e., the
3117               DISPLAY  environment  variable is set), the tty is a pseudo-tty
3118               (pty) or the shell was not so compiled (see the  version  shell
3119               variable).   Unset  or  set to `0' to disable automatic logout.
3120               See also the afsuser and logout shell variables.
3121
3122       autorehash (+)
3123               If set, the internal hash table of the contents of the directo‐
3124               ries  in  the  path variable will be recomputed if a command is
3125               not found in the hash table.  In addition, the list  of  avail‐
3126               able  commands  will  be rebuilt for each command completion or
3127               spelling correction attempt if set to `complete'  or  `correct'
3128               respectively;  if  set  to `always', this will be done for both
3129               cases.
3130
3131       backslash_quote (+)
3132               If set, backslashes (`\') always quote `\', `'', and `"'.  This
3133               may  make complex quoting tasks easier, but it can cause syntax
3134               errors in csh(1) scripts.
3135
3136       catalog The file name  of  the  message  catalog.   If  set,  tcsh  use
3137               `tcsh.${catalog}'  as  a  message  catalog  instead  of default
3138               `tcsh'.
3139
3140       cdpath  A list of directories in which cd should search for subdirecto‐
3141               ries if they aren't found in the current directory.
3142
3143       cdtohome (+)
3144               If  not  set,  cd requires a directory name, and will not go to
3145               the home directory if it's omitted.  This is set by default.
3146
3147       color   If set, it enables color display for the builtin  ls-F  and  it
3148               passes  --color=auto  to  ls.   Alternatively, it can be set to
3149               only ls-F or only ls to enable color to only one command.  Set‐
3150               ting it to nothing is equivalent to setting it to (ls-F ls).
3151
3152       colorcat
3153               If set, it enables color escape sequence for NLS message files.
3154               And display colorful NLS messages.
3155
3156       command (+)
3157               If set, the command which was passed to the shell with  the  -c
3158               flag (q.v.).
3159
3160       compat_expr (+)
3161               If set, the shell will evaluate expressions right to left, like
3162               the original csh.
3163
3164       complete (+)
3165               If set to `igncase', the completion becomes  case  insensitive.
3166               If  set to `enhance', completion ignores case and considers hy‐
3167               phens and underscores to be equivalent; it will also treat  pe‐
3168               riods, hyphens and underscores (`.', `-' and `_') as word sepa‐
3169               rators.  If set to `Enhance', completion matches uppercase  and
3170               underscore  characters explicitly and matches lowercase and hy‐
3171               phens in a case-insensitive manner; it will treat periods,  hy‐
3172               phens and underscores as word separators.
3173
3174       continue (+)
3175               If  set  to  a  list  of  commands, the shell will continue the
3176               listed commands, instead of starting a new one.
3177
3178       continue_args (+)
3179               Same as continue, but the shell will execute:
3180
3181                   echo `pwd` $argv > ~/.<cmd>_pause; %<cmd>
3182
3183       correct (+)
3184               If set to `cmd', commands are automatically spelling-corrected.
3185               If set to `complete', commands are automatically completed.  If
3186               set to `all', the entire command line is corrected.
3187
3188       csubstnonl (+)
3189               If set, newlines and carriage returns in  command  substitution
3190               are replaced by spaces.  Set by default.
3191
3192       cwd     The  full  pathname  of  the  current  directory.  See also the
3193               dirstack and owd shell variables.
3194
3195       dextract (+)
3196               If set, `pushd +n' extracts the nth directory from  the  direc‐
3197               tory stack rather than rotating it to the top.
3198
3199       dirsfile (+)
3200               The  default location in which `dirs -S' and `dirs -L' look for
3201               a history file.  If unset, ~/.cshdirs is  used.   Because  only
3202               ~/.tcshrc  is  normally  sourced  before  ~/.cshdirs,  dirsfile
3203               should be set in ~/.tcshrc rather than ~/.login.
3204
3205       dirstack (+)
3206               An array  of  all  the  directories  on  the  directory  stack.
3207               `$dirstack[1]' is the current working directory, `$dirstack[2]'
3208               the first directory on the stack, etc.  Note that  the  current
3209               working directory is `$dirstack[1]' but `=0' in directory stack
3210               substitutions, etc.  One can change the  stack  arbitrarily  by
3211               setting  dirstack,  but  the first element (the current working
3212               directory) is always correct.  See also the cwd and  owd  shell
3213               variables.
3214
3215       dspmbyte (+)
3216               Has an effect iff 'dspm' is listed as part of the version shell
3217               variable.  If set to `euc', it enables display and editing EUC-
3218               kanji(Japanese) code.  If set to `sjis', it enables display and
3219               editing Shift-JIS(Japanese) code.  If set to `big5', it enables
3220               display  and  editing Big5(Chinese) code.  If set to `utf8', it
3221               enables display and editing Utf8(Unicode) code.  If set to  the
3222               following  format,  it  enables display and editing of original
3223               multi-byte code format:
3224
3225                   > set dspmbyte = 0000....(256 bytes)....0000
3226
3227               The table requires just 256 bytes.  Each character of 256 char‐
3228               acters  corresponds  (from  left  to  right) to the ASCII codes
3229               0x00, 0x01, ... 0xff.  Each character is set  to  number  0,1,2
3230               and 3.  Each number has the following meaning:
3231                 0 ... not used for multi-byte characters.
3232                 1 ... used for the first byte of a multi-byte character.
3233                 2 ... used for the second byte of a multi-byte character.
3234                 3  ...  used  for  both  the  first byte and second byte of a
3235               multi-byte character.
3236
3237                 Example:
3238               If set to `001322', the first  character  (means  0x00  of  the
3239               ASCII code) and second character (means 0x01 of ASCII code) are
3240               set to `0'.  Then, it is not used  for  multi-byte  characters.
3241               The  3rd  character (0x02) is set to '1', indicating that it is
3242               used for the first byte of a  multi-byte  character.   The  4th
3243               character(0x03) is set '3'.  It is used for both the first byte
3244               and the second byte of a multi-byte character.  The 5th and 6th
3245               characters (0x04,0x05) are set to '2', indicating that they are
3246               used for the second byte of a multi-byte character.
3247
3248               The GNU fileutils version of ls cannot display multi-byte file‐
3249               names  without  the -N ( --literal ) option.   If you are using
3250               this version, set the second word of dspmbyte to "ls".  If not,
3251               for example, "ls-F -l" cannot display multi-byte filenames.
3252
3253                 Note:
3254               This  variable  can only be used if KANJI and DSPMBYTE has been
3255               defined at compile time.
3256
3257       dunique (+)
3258               If set, pushd removes any instances of name from the stack  be‐
3259               fore pushing it onto the stack.
3260
3261       echo    If  set,  each command with its arguments is echoed just before
3262               it is executed.  For non-builtin commands all expansions  occur
3263               before echoing.  Builtin commands are echoed before command and
3264               filename substitution, because  these  substitutions  are  then
3265               done selectively.  Set by the -x command line option.
3266
3267       echo_style (+)
3268               The style of the echo builtin.  May be set to
3269
3270               bsd     Don't echo a newline if the first argument is `-n'; the
3271                       default for csh.
3272               sysv    Recognize backslashed escape sequences in echo strings.
3273               both    Recognize both the `-n' flag and backslashed escape se‐
3274                       quences; the default for tcsh.
3275               none    Recognize neither.
3276
3277               Set by default to the local system default.  The BSD and System
3278               V options are described in the echo(1) man pages on the  appro‐
3279               priate systems.
3280
3281       edit (+)
3282               If set, the command-line editor is used.  Set by default in in‐
3283               teractive shells.
3284
3285       editors (+)
3286               A list of command names for the run-fg-editor editor command to
3287               match.  If not set, the EDITOR (`ed' if unset) and VISUAL (`vi'
3288               if unset) environment variables will be used instead.
3289
3290       ellipsis (+)
3291               If set, the `%c'/`%.' and `%C' prompt sequences (see the prompt
3292               shell  variable)  indicate skipped directories with an ellipsis
3293               (`...')  instead of `/<skipped>'.
3294
3295       euid (+)
3296               The user's effective user ID.
3297
3298       euser (+)
3299               The first matching passwd entry name corresponding to  the  ef‐
3300               fective user ID.
3301
3302       fignore (+)
3303               Lists file name suffixes to be ignored by completion.
3304
3305       filec   In tcsh, completion is always used and this variable is ignored
3306               by default. If edit is unset, then the traditional csh  comple‐
3307               tion is used.  If set in csh, filename completion is used.
3308
3309       gid (+) The user's real group ID.
3310
3311       globdot (+)
3312               If  set,  wild-card glob patterns will match files and directo‐
3313               ries beginning with `.' except for `.' and `..'
3314
3315       globstar (+)
3316               If set, the `**' and `***' file glob patterns  will  match  any
3317               string of characters including `/' traversing any existing sub-
3318               directories.  (e.g.  `ls **.c' will list all the  .c  files  in
3319               the  current directory tree).  If used by itself, it will match
3320               zero or more sub-directories (e.g. `ls  /usr/include/**/time.h'
3321               will list any file named `time.h' in the /usr/include directory
3322               tree; whereas `ls /usr/include/**time.h' will match any file in
3323               the  /usr/include  directory tree ending in `time.h').  To pre‐
3324               vent problems with recursion, the `**'  glob-pattern  will  not
3325               descend  into a symbolic link containing a directory.  To over‐
3326               ride this, use `***'
3327
3328       group (+)
3329               The user's group name.
3330
3331       highlight
3332               If set, the incremental search match (in i-search-back  and  i-
3333               search-fwd)  and the region between the mark and the cursor are
3334               highlighted in reverse video.
3335
3336               Highlighting requires more frequent terminal writes, which  in‐
3337               troduces  extra  overhead.  If  you care about terminal perfor‐
3338               mance, you may want to leave this unset.
3339
3340       histchars
3341               A string value determining the characters used in History  sub‐
3342               stitution  (q.v.).  The first character of its value is used as
3343               the history substitution character, replacing the default char‐
3344               acter  `!'.   The  second  character  of its value replaces the
3345               character `^' in quick substitutions.
3346
3347       histdup (+)
3348               Controls handling of duplicate entries in the history list.  If
3349               set to `all' only unique history events are entered in the his‐
3350               tory list.  If set to `prev' and the last history event is  the
3351               same  as  the  current command, then the current command is not
3352               entered in the history.  If set to `erase' and the  same  event
3353               is  found  in  the history list, that old event gets erased and
3354               the current one gets inserted.  Note that the `prev' and  `all'
3355               options renumber history events so there are no gaps.
3356
3357       histfile (+)
3358               The  default  location  in  which `history -S' and `history -L'
3359               look for a history file.  If unset, ~/.history is used.   hist‐
3360               file  is  useful  when  sharing the same home directory between
3361               different machines, or when saving separate histories  on  dif‐
3362               ferent  terminals.   Because only ~/.tcshrc is normally sourced
3363               before ~/.history, histfile should be set in  ~/.tcshrc  rather
3364               than ~/.login.
3365
3366       histlit (+)
3367               If  set, builtin and editor commands and the savehist mechanism
3368               use the literal (unexpanded) form of lines in the history list.
3369               See also the toggle-literal-history editor command.
3370
3371       history The  first word indicates the number of history events to save.
3372               The optional second word (+) indicates the format in which his‐
3373               tory  is  printed;  if  not given, `%h\t%T\t%R\n' is used.  The
3374               format sequences are described below  under  prompt;  note  the
3375               variable meaning of `%R'.  Set to `100' by default.
3376
3377       home    Initialized to the home directory of the invoker.  The filename
3378               expansion of `~' refers to this variable.
3379
3380       ignoreeof
3381               If set to the empty string or `0' and the  input  device  is  a
3382               terminal,  the  end-of-file  command  (usually generated by the
3383               user by typing `^D' on an empty line) causes the shell to print
3384               `Use  "exit" to leave tcsh.' instead of exiting.  This prevents
3385               the shell from accidentally being  killed.   Historically  this
3386               setting  exited  after  26  successive  EOF's to avoid infinite
3387               loops.  If set to a number n, the shell ignores n - 1  consecu‐
3388               tive  end-of-files  and exits on the nth.  (+) If unset, `1' is
3389               used, i.e., the shell exits on a single `^D'.
3390
3391       implicitcd (+)
3392               If set, the shell treats a directory name typed as a command as
3393               though  it  were a request to change to that directory.  If set
3394               to verbose, the change of directory is echoed to  the  standard
3395               output.   This  behavior  is inhibited in non-interactive shell
3396               scripts, or for  command  strings  with  more  than  one  word.
3397               Changing directory takes precedence over executing a like-named
3398               command, but it is done after alias substitutions.   Tilde  and
3399               variable expansions work as expected.
3400
3401       inputmode (+)
3402               If  set  to  `insert' or `overwrite', puts the editor into that
3403               input mode at the beginning of each line.
3404
3405       killdup (+)
3406               Controls handling of duplicate entries in the  kill  ring.   If
3407               set  to `all' only unique strings are entered in the kill ring.
3408               If set to `prev' and the last killed string is the same as  the
3409               current  killed  string, then the current string is not entered
3410               in the ring.  If set to `erase' and the same string is found in
3411               the  kill ring, the old string is erased and the current one is
3412               inserted.
3413
3414       killring (+)
3415               Indicates the number of killed strings to keep in memory.   Set
3416               to  `30'  by  default.   If  unset or set to less than `2', the
3417               shell will only keep the most recently killed string.   Strings
3418               are  put  in  the  killring  by the editor commands that delete
3419               (kill) strings of text, e.g.  backward-delete-word,  kill-line,
3420               etc, as well as the copy-region-as-kill command.  The yank edi‐
3421               tor command will yank the most recently killed string into  the
3422               command-line,  while yank-pop (see Editor commands) can be used
3423               to yank earlier killed strings.
3424
3425       listflags (+)
3426               If set to `x', `a' or `A', or any  combination  thereof  (e.g.,
3427               `xA'),  they  are used as flags to ls-F, making it act like `ls
3428               -xF', `ls -Fa', `ls -FA' or a combination  (e.g.,  `ls  -FxA'):
3429               `a'  shows all files (even if they start with a `.'), `A' shows
3430               all files but `.' and `..', and `x'  sorts  across  instead  of
3431               down.   If  the  second word of listflags is set, it is used as
3432               the path to `ls(1)'.
3433
3434       listjobs (+)
3435               If set, all jobs are listed when a job is suspended.  If set to
3436               `long', the listing is in long format.
3437
3438       listlinks (+)
3439               If  set,  the  ls-F  builtin  command shows the type of file to
3440               which each symbolic link points.
3441
3442       listmax (+)
3443               The maximum number of items which the list-choices editor  com‐
3444               mand will list without asking first.
3445
3446       listmaxrows (+)
3447               The maximum number of rows of items which the list-choices edi‐
3448               tor command will list without asking first.
3449
3450       loginsh (+)
3451               Set by the shell if it is a login shell.  Setting or  unsetting
3452               it within a shell has no effect.  See also shlvl.
3453
3454       logout (+)
3455               Set  by  the  shell  to `normal' before a normal logout, `auto‐
3456               matic' before an automatic logout, and `hangup'  if  the  shell
3457               was  killed by a hangup signal (see Signal handling).  See also
3458               the autologout shell variable.
3459
3460       mail    A list of files and directories to check for incoming mail, op‐
3461               tionally preceded by a numeric word.  Before each prompt, if 10
3462               minutes have passed since the last check, the shell checks each
3463               file and says `You have new mail.' (or, if mail contains multi‐
3464               ple files, `You have new mail in name.')  if  the  filesize  is
3465               greater  than  zero in size and has a modification time greater
3466               than its access time.
3467
3468               If you are in a login shell, then no mail file is reported  un‐
3469               less  it has been modified after the time the shell has started
3470               up, to prevent redundant notifications.   Most  login  programs
3471               will tell you whether or not you have mail when you log in.
3472
3473               If  a  file  specified  in  mail is a directory, the shell will
3474               count each file within that directory as  a  separate  message,
3475               and  will  report  `You  have n mails.' or `You have n mails in
3476               name.' as appropriate.  This functionality is provided  primar‐
3477               ily  for those systems which store mail in this manner, such as
3478               the Andrew Mail System.
3479
3480               If the first word of mail is numeric it is taken as a different
3481               mail checking interval, in seconds.
3482
3483               Under  very  rare circumstances, the shell may report `You have
3484               mail.' instead of `You have new mail.'
3485
3486       matchbeep (+)
3487               If set to `never', completion never  beeps.   If  set  to  `no‐
3488               match',  it  beeps only when there is no match.  If set to `am‐
3489               biguous', it beeps when there are multiple matches.  If set  to
3490               `notunique',  it beeps when there is one exact and other longer
3491               matches.  If unset, `ambiguous' is used.
3492
3493       nobeep (+)
3494               If set, beeping is completely disabled.  See also visiblebell.
3495
3496       noclobber
3497               If set, restrictions are placed on output redirection to insure
3498               that  files  are not accidentally destroyed and that `>>' redi‐
3499               rections refer to existing  files,  as  described  in  the  In‐
3500               put/output section.
3501
3502       noding  If  set,  disable  the  printing  of `DING!' in the prompt time
3503               specifiers at the change of hour.
3504
3505       noglob  If set, Filename substitution and Directory stack  substitution
3506               (q.v.)  are  inhibited.   This  is most useful in shell scripts
3507               which do not deal with filenames, or after a list of  filenames
3508               has been obtained and further expansions are not desirable.
3509
3510       nokanji (+)
3511               If  set  and  the  shell  supports Kanji (see the version shell
3512               variable), it is disabled so that the meta key can be used.
3513
3514       nonomatch
3515               If set, a Filename substitution or Directory stack substitution
3516               (q.v.)  which  does  not  match  any existing files is left un‐
3517               touched rather than causing an error.  It is still an error for
3518               the substitution to be malformed, e.g., `echo [' still gives an
3519               error.
3520
3521       nostat (+)
3522               A list of directories (or glob-patterns  which  match  directo‐
3523               ries;  see  Filename substitution) that should not be stat(2)ed
3524               during a completion operation.  This is usually used to exclude
3525               directories  which  take  too much time to stat(2), for example
3526               /afs.
3527
3528       notify  If set, the shell  announces  job  completions  asynchronously.
3529               The  default is to present job completions just before printing
3530               a prompt.
3531
3532       oid (+) The user's real organization ID.  (Domain/OS only)
3533
3534       owd (+) The old working directory, equivalent to the `-' used by cd and
3535               pushd.  See also the cwd and dirstack shell variables.
3536
3537       padhour If set, enable the printing of padding '0' for hours, in 24 and
3538               12 hour formats.  E.G.: 07:45:42 vs. 7:45:42.
3539
3540       parseoctal
3541               To retain compatibily with  older  versions  numeric  variables
3542               starting  with  0  are  not  interpreted as octal. Setting this
3543               variable enables proper octal parsing.
3544
3545       path    A list of directories in which to look for executable commands.
3546               A  null  word  specifies the current directory.  If there is no
3547               path variable then only full path names will execute.  path  is
3548               set  by the shell at startup from the PATH environment variable
3549               or, if PATH does not exist, to a system-dependent default some‐
3550               thing  like  `(/usr/local/bin  /usr/bsd /bin /usr/bin .)'.  The
3551               shell may put `.' first or last in path or omit it entirely de‐
3552               pending on how it was compiled; see the version shell variable.
3553               A shell which is given neither the -c nor the -t option  hashes
3554               the contents of the directories in path after reading ~/.tcshrc
3555               and each time path is reset.  If one adds a new  command  to  a
3556               directory in path while the shell is active, one may need to do
3557               a rehash for the shell to find it.
3558
3559       printexitvalue (+)
3560               If set and an interactive program exits with a non-zero status,
3561               the shell prints `Exit status'.
3562
3563       prompt  The  string  which  is printed before reading each command from
3564               the terminal.  prompt may include any of the following  format‐
3565               ting  sequences  (+),  which are replaced by the given informa‐
3566               tion:
3567
3568               %/  The current working directory.
3569               %~  The current working directory, but with one's  home  direc‐
3570                   tory  represented  by `~' and other users' home directories
3571                   represented  by  `~user'  as  per  Filename   substitution.
3572                   `~user'  substitution happens only if the shell has already
3573                   used `~user' in a pathname in the current session.
3574               %c[[0]n], %.[[0]n]
3575                   The trailing component of the current working directory, or
3576                   n  trailing  components if a digit n is given.  If n begins
3577                   with `0', the number  of  skipped  components  precede  the
3578                   trailing  component(s)  in the format `/<skipped>trailing'.
3579                   If the ellipsis shell variable is set,  skipped  components
3580                   are  represented  by  an  ellipsis  so  the  whole  becomes
3581                   `...trailing'.  `~' substitution is done as in `%~'  above,
3582                   but  the  `~'  component  is ignored when counting trailing
3583                   components.
3584               %C  Like %c, but without `~' substitution.
3585               %h, %!, !
3586                   The current history event number.
3587               %M  The full hostname.
3588               %m  The hostname up to the first `.'.
3589               %S (%s)
3590                   Start (stop) standout mode.
3591               %B (%b)
3592                   Start (stop) boldfacing mode.
3593               %U (%u)
3594                   Start (stop) underline mode.
3595               %t, %@
3596                   The time of day in 12-hour AM/PM format.
3597               %T  Like `%t', but in 24-hour format (but see  the  ampm  shell
3598                   variable).
3599               %p  The  `precise'  time  of  day in 12-hour AM/PM format, with
3600                   seconds.
3601               %P  Like `%p', but in 24-hour format (but see  the  ampm  shell
3602                   variable).
3603               \c  c is parsed as in bindkey.
3604               ^c  c is parsed as in bindkey.
3605               %%  A single `%'.
3606               %n  The user name.
3607               %N  The effective user name.
3608               %j  The number of jobs.
3609               %d  The weekday in `Day' format.
3610               %D  The day in `dd' format.
3611               %w  The month in `Mon' format.
3612               %W  The month in `mm' format.
3613               %y  The year in `yy' format.
3614               %Y  The year in `yyyy' format.
3615               %l  The shell's tty.
3616               %L  Clears  from the end of the prompt to end of the display or
3617                   the end of the line.
3618               %$  Expands the shell or environment variable name  immediately
3619                   after the `$'.
3620               %#  `>'  (or the first character of the promptchars shell vari‐
3621                   able) for normal users, `#' (or  the  second  character  of
3622                   promptchars) for the superuser.
3623               %{string%}
3624                   Includes string as a literal escape sequence.  It should be
3625                   used only to change terminal attributes and should not move
3626                   the  cursor  location.  This cannot be the last sequence in
3627                   prompt.
3628               %?  The return code of the command  executed  just  before  the
3629                   prompt.
3630               %R  In prompt2, the status of the parser.  In prompt3, the cor‐
3631                   rected string.  In history, the history string.
3632
3633               `%B', `%S', `%U' and `%{string%}' are available in only  eight-
3634               bit-clean shells; see the version shell variable.
3635
3636               The  bold,  standout  and underline sequences are often used to
3637               distinguish a superuser shell.  For example,
3638
3639                   > set prompt = "%m [%h] %B[%@]%b [%/] you rang? "
3640                   tut [37] [2:54pm] [/usr/accts/sys] you rang? _
3641
3642               If `%t', `%@', `%T', `%p', or `%P' is used, and noding  is  not
3643               set,  then print `DING!' on the change of hour (i.e, `:00' min‐
3644               utes) instead of the actual time.
3645
3646               Set by default to `%# ' in interactive shells.
3647
3648       prompt2 (+)
3649               The string with which to prompt in while and foreach loops  and
3650               after  lines  ending  in `\'.  The same format sequences may be
3651               used as in prompt (q.v.); note the variable  meaning  of  `%R'.
3652               Set by default to `%R? ' in interactive shells.
3653
3654       prompt3 (+)
3655               The  string  with  which  to  prompt  when confirming automatic
3656               spelling correction.  The same format sequences may be used  as
3657               in  prompt  (q.v.);  note the variable meaning of `%R'.  Set by
3658               default to `CORRECT>%R (y|n|e|a)? ' in interactive shells.
3659
3660       promptchars (+)
3661               If set (to a two-character string),  the  `%#'  formatting  se‐
3662               quence  in the prompt shell variable is replaced with the first
3663               character for normal users and the second character for the su‐
3664               peruser.
3665
3666       pushdtohome (+)
3667               If set, pushd without arguments does `pushd ~', like cd.
3668
3669       pushdsilent (+)
3670               If set, pushd and popd do not print the directory stack.
3671
3672       recexact (+)
3673               If set, completion completes on an exact match even if a longer
3674               match is possible.
3675
3676       recognize_only_executables (+)
3677               If set, command listing displays only files in  the  path  that
3678               are executable.  Slow.
3679
3680       rmstar (+)
3681               If set, the user is prompted before `rm *' is executed.
3682
3683       rprompt (+)
3684               The string to print on the right-hand side of the screen (after
3685               the command input) when the prompt is being  displayed  on  the
3686               left.   It recognizes the same formatting characters as prompt.
3687               It will automatically disappear and reappear as  necessary,  to
3688               ensure  that command input isn't obscured, and will appear only
3689               if the prompt, command input, and itself will fit  together  on
3690               the  first  line.   If  edit  isn't  set,  then rprompt will be
3691               printed after the prompt and before the command input.
3692
3693       savedirs (+)
3694               If set, the shell does `dirs -S' before exiting.  If the  first
3695               word  is set to a number, at most that many directory stack en‐
3696               tries are saved.
3697
3698       savehist
3699               If set, the shell does `history -S'  before  exiting.   If  the
3700               first  word  is  set  to  a number, at most that many lines are
3701               saved.  (The number should be less than or equal to the  number
3702               history  entries;  if  it  is set to greater than the number of
3703               history settings, only history entries will be  saved)  If  the
3704               second  word is set to `merge', the history list is merged with
3705               the existing history file instead of replacing it (if there  is
3706               one)  and  sorted  by time stamp and the most recent events are
3707               retained.  If the second word of savehist is  `merge'  and  the
3708               third  word  is  set to `lock', the history file update will be
3709               serialized with other shell sessions that would  possibly  like
3710               to merge history at exactly the same time. (+)
3711
3712       sched (+)
3713               The  format in which the sched builtin command prints scheduled
3714               events; if not given, `%h\t%T\t%R\n' is used.  The  format  se‐
3715               quences  are  described  above  under prompt; note the variable
3716               meaning of `%R'.
3717
3718       shell   The file in which the shell resides.  This is used  in  forking
3719               shells  to  interpret  files  which  have execute bits set, but
3720               which are not executable by the system.  (See  the  description
3721               of  Builtin and non-builtin command execution.)  Initialized to
3722               the (system-dependent) home of the shell.
3723
3724       shlvl (+)
3725               The number of nested shells.  Reset to 1 in login shells.   See
3726               also loginsh.
3727
3728       status  The  exit  status from the last command or backquote expansion,
3729               or any command in a pipeline is propagated to status.  (This is
3730               also  the  default  csh behavior.)  This default does not match
3731               what POSIX mandates (to return the status of the  last  command
3732               only). To match the POSIX behavior, you need to unset anyerror.
3733
3734               If  the  anyerror variable is unset, the exit status of a pipe‐
3735               line is determined only from the last command in the  pipeline,
3736               and  the exit status of a backquote expansion is not propagated
3737               to status.
3738
3739               If a command terminated abnormally, then 0200 is added  to  the
3740               status.   Builtin  commands  which fail return exit status `1',
3741               all other builtin commands return status `0'.
3742
3743       symlinks (+)
3744               Can be set to several different values to control symbolic link
3745               (`symlink') resolution:
3746
3747               If  set to `chase', whenever the current directory changes to a
3748               directory containing a symbolic link, it  is  expanded  to  the
3749               real name of the directory to which the link points.  This does
3750               not work for the user's home directory; this is a bug.
3751
3752               If set to `ignore', the shell tries to construct a current  di‐
3753               rectory  relative  to the current directory before the link was
3754               crossed.  This means that cding through  a  symbolic  link  and
3755               then  `cd  ..'ing  returns one to the original directory.  This
3756               affects only builtin commands and filename completion.
3757
3758               If set to `expand', the shell tries to fix  symbolic  links  by
3759               actually  expanding arguments which look like path names.  This
3760               affects any command, not just  builtins.   Unfortunately,  this
3761               does  not  work  for hard-to-recognize filenames, such as those
3762               embedded in command options.  Expansion  may  be  prevented  by
3763               quoting.  While this setting is usually the most convenient, it
3764               is sometimes misleading and sometimes confusing when  it  fails
3765               to  recognize  an argument which should be expanded.  A compro‐
3766               mise is to use `ignore' and use the editor  command  normalize-
3767               path (bound by default to ^X-n) when necessary.
3768
3769               Some  examples are in order.  First, let's set up some play di‐
3770               rectories:
3771
3772                   > cd /tmp
3773                   > mkdir from from/src to
3774                   > ln -s from/src to/dst
3775
3776               Here's the behavior with symlinks unset,
3777
3778                   > cd /tmp/to/dst; echo $cwd
3779                   /tmp/to/dst
3780                   > cd ..; echo $cwd
3781                   /tmp/from
3782
3783               here's the behavior with symlinks set to `chase',
3784
3785                   > cd /tmp/to/dst; echo $cwd
3786                   /tmp/from/src
3787                   > cd ..; echo $cwd
3788                   /tmp/from
3789
3790               here's the behavior with symlinks set to `ignore',
3791
3792                   > cd /tmp/to/dst; echo $cwd
3793                   /tmp/to/dst
3794                   > cd ..; echo $cwd
3795                   /tmp/to
3796
3797               and here's the behavior with symlinks set to `expand'.
3798
3799                   > cd /tmp/to/dst; echo $cwd
3800                   /tmp/to/dst
3801                   > cd ..; echo $cwd
3802                   /tmp/to
3803                   > cd /tmp/to/dst; echo $cwd
3804                   /tmp/to/dst
3805                   > cd ".."; echo $cwd
3806                   /tmp/from
3807                   > /bin/echo ..
3808                   /tmp/to
3809                   > /bin/echo ".."
3810                   ..
3811
3812               Note that `expand' expansion 1) works just  like  `ignore'  for
3813               builtins  like  cd,  2) is prevented by quoting, and 3) happens
3814               before filenames are passed to non-builtin commands.
3815
3816       tcsh (+)
3817               The version number of the shell in the format `R.VV.PP',  where
3818               `R'  is  the major release number, `VV' the current version and
3819               `PP' the patchlevel.
3820
3821       term    The terminal type.  Usually set in ~/.login as described  under
3822               Startup and shutdown.
3823
3824       time    If set to a number, then the time builtin (q.v.) executes auto‐
3825               matically after each command which takes more  than  that  many
3826               CPU seconds.  If there is a second word, it is used as a format
3827               string for the output of the time builtin.  (u)  The  following
3828               sequences may be used in the format string:
3829
3830               %U  The time the process spent in user mode in cpu seconds.
3831               %S  The time the process spent in kernel mode in cpu seconds.
3832               %E  The elapsed (wall clock) time in seconds.
3833               %P  The CPU percentage computed as (%U + %S) / %E.
3834               %W  Number of times the process was swapped.
3835               %X  The average amount in (shared) text space used in Kbytes.
3836               %D  The  average  amount in (unshared) data/stack space used in
3837                   Kbytes.
3838               %K  The total space used (%X + %D) in Kbytes.
3839               %M  The maximum memory the process had in use at  any  time  in
3840                   Kbytes.
3841               %F  The  number of major page faults (page needed to be brought
3842                   from disk).
3843               %R  The number of minor page faults.
3844               %I  The number of input operations.
3845               %O  The number of output operations.
3846               %r  The number of socket messages received.
3847               %s  The number of socket messages sent.
3848               %k  The number of signals received.
3849               %w  The number of voluntary context switches (waits).
3850               %c  The number of involuntary context switches.
3851
3852               Only the first four sequences are supported on systems  without
3853               BSD  resource limit functions.  The default time format is `%Uu
3854               %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww' for systems that support re‐
3855               source  usage reporting and `%Uu %Ss %E %P' for systems that do
3856               not.
3857
3858               Under Sequent's DYNIX/ptx, %X, %D, %K, %r and %s are not avail‐
3859               able, but the following additional sequences are:
3860
3861               %Y  The number of system calls performed.
3862               %Z  The number of pages which are zero-filled on demand.
3863               %i  The  number  of times a process's resident set size was in‐
3864                   creased by the kernel.
3865               %d  The number of times a process's resident set size  was  de‐
3866                   creased by the kernel.
3867               %l  The number of read system calls performed.
3868               %m  The number of write system calls performed.
3869               %p  The number of reads from raw disk devices.
3870               %q  The number of writes to raw disk devices.
3871
3872               and  the  default  time  format  is  `%Uu  %Ss  %E  %P  %I+%Oio
3873               %Fpf+%Ww'.  Note that the CPU percentage  can  be  higher  than
3874               100% on multi-processors.
3875
3876       tperiod (+)
3877               The period, in minutes, between executions of the periodic spe‐
3878               cial alias.
3879
3880       tty (+) The name of the tty, or empty if not attached to one.
3881
3882       uid (+) The user's real user ID.
3883
3884       user    The user's login name.
3885
3886       verbose If set, causes the words of each command to be  printed,  after
3887               history  substitution (if any).  Set by the -v command line op‐
3888               tion.
3889
3890       version (+)
3891               The version ID stamp.  It contains the shell's  version  number
3892               (see  tcsh), origin, release date, vendor, operating system and
3893               machine (see VENDOR, OSTYPE and MACHTYPE) and a comma-separated
3894               list  of options which were set at compile time.  Options which
3895               are set by default in the distribution are noted.
3896
3897               8b    The shell is eight bit clean; default
3898               7b    The shell is not eight bit clean
3899               wide  The shell is multibyte encoding clean (like UTF-8)
3900               nls   The system's NLS is used; default for systems with NLS
3901               lf    Login shells execute /etc/csh.login before instead of af‐
3902                     ter  /etc/csh.cshrc  and ~/.login before instead of after
3903                     ~/.tcshrc and ~/.history.
3904               dl    `.' is put last in path for security; default
3905               nd    `.' is omitted from path for security
3906               vi    vi(1)-style  editing   is   the   default   rather   than
3907                     emacs(1)-style
3908               dtr   Login shells drop DTR when exiting
3909               bye   bye  is a synonym for logout and log is an alternate name
3910                     for watchlog
3911               al    autologout is enabled; default
3912               kan   Kanji is used if appropriate  according  to  locale  set‐
3913                     tings, unless the nokanji shell variable is set
3914               sm    The system's malloc(3) is used
3915               hb    The `#!<program> <args>' convention is emulated when exe‐
3916                     cuting shell scripts
3917               ng    The newgrp builtin is available
3918               rh    The shell attempts  to  set  the  REMOTEHOST  environment
3919                     variable
3920               afs   The shell verifies your password with the kerberos server
3921                     if local authentication fails.  The afsuser  shell  vari‐
3922                     able  or  the  AFSUSER environment variable override your
3923                     local username if set.
3924
3925               An administrator may enter additional strings to indicate  dif‐
3926               ferences in the local version.
3927
3928       vimode (+)
3929               If  unset,  various  key  bindings  change  behavior to be more
3930               emacs(1)-style: word boundaries  are  determined  by  wordchars
3931               versus other characters.
3932
3933               If  set,  various  key  bindings  change  behavior  to  be more
3934               vi(1)-style: word boundaries are determined by wordchars versus
3935               whitespace  versus  other  characters;  cursor behavior depends
3936               upon current vi mode (command, delete, insert, replace).
3937
3938               This variable is unset by bindkey -e and  set  by  bindkey  -v.
3939               vimode  may  be explicitly set or unset by the user after those
3940               bindkey operations if required.
3941
3942       visiblebell (+)
3943               If set, a screen flash is used rather than  the  audible  bell.
3944               See also nobeep.
3945
3946       watch (+)
3947               A  list of user/terminal pairs to watch for logins and logouts.
3948               If either the user is `any' all terminals are watched  for  the
3949               given  user  and  vice  versa.   Setting  watch  to `(any any)'
3950               watches all users and terminals.  For example,
3951
3952                   set watch = (george ttyd1 any console $user any)
3953
3954               reports activity of the user `george' on ttyd1, any user on the
3955               console, and oneself (or a trespasser) on any terminal.
3956
3957               Logins and logouts are checked every 10 minutes by default, but
3958               the first word of watch can be set to a number to  check  every
3959               so many minutes.  For example,
3960
3961                   set watch = (1 any any)
3962
3963               reports any login/logout once every minute.  For the impatient,
3964               the log builtin command triggers a watch report  at  any  time.
3965               All  current logins are reported (as with the log builtin) when
3966               watch is first set.
3967
3968               The who shell variable controls the format of watch reports.
3969
3970       who (+) The format string for watch messages.  The following  sequences
3971               are replaced by the given information:
3972
3973               %n  The name of the user who logged in/out.
3974               %a  The  observed  action,  i.e.,  `logged on', `logged off' or
3975                   `replaced olduser on'.
3976               %l  The terminal (tty) on which the user logged in/out.
3977               %M  The full hostname of the remote host, or `local' if the lo‐
3978                   gin/logout was from the local host.
3979               %m  The  hostname  of the remote host up to the first `.'.  The
3980                   full name is printed if it is an IP address or an X  Window
3981                   System display.
3982
3983               %M  and  %m are available on only systems that store the remote
3984               hostname in /etc/utmp.  If unset, `%n has %a %l  from  %m.'  is
3985               used,  or  `%n has %a %l.' on systems which don't store the re‐
3986               mote hostname.
3987
3988       wordchars (+)
3989               A list of non-alphanumeric characters to be considered part  of
3990               a  word  by  the  forward-word, backward-word etc., editor com‐
3991               mands.  If unset, the default value is determined based on  the
3992               state of vimode: if vimode is unset, `*?_-.[]~=' is used as the
3993               default; if vimode is set, `_' is used as the default.
3994

ENVIRONMENT

3996       AFSUSER (+)
3997               Equivalent to the afsuser shell variable.
3998
3999       COLUMNS The number of columns in the terminal.   See  Terminal  manage‐
4000               ment.
4001
4002       DISPLAY Used by X Window System (see X(1)).  If set, the shell does not
4003               set autologout (q.v.).
4004
4005       EDITOR  The pathname to a default editor.  Used  by  the  run-fg-editor
4006               editor command if the the editors shell variable is unset.  See
4007               also the VISUAL environment variable.
4008
4009       GROUP (+)
4010               Equivalent to the group shell variable.
4011
4012       HOME    Equivalent to the home shell variable.
4013
4014       HOST (+)
4015               Initialized to the name of the machine on which  the  shell  is
4016               running, as determined by the gethostname(2) system call.
4017
4018       HOSTTYPE (+)
4019               Initialized  to  the type of machine on which the shell is run‐
4020               ning, as determined at compile time.  This variable is obsolete
4021               and will be removed in a future version.
4022
4023       HPATH (+)
4024               A colon-separated list of directories in which the run-help ed‐
4025               itor command looks for command documentation.
4026
4027       LANG    Gives the preferred character environment.  See Native Language
4028               System support.
4029
4030       LC_CTYPE
4031               If  set,  only ctype character handling is changed.  See Native
4032               Language System support.
4033
4034       LINES   The number of lines in the terminal.  See Terminal management.
4035
4036       LS_COLORS
4037               The format of this variable is reminiscent  of  the  termcap(5)
4038               file  format; a colon-separated list of expressions of the form
4039               "xx=string", where "xx" is a two-character variable name.   The
4040               variables with their associated defaults are:
4041
4042                   no   0      Normal (non-filename) text
4043                   fi   0      Regular file
4044                   di   01;34  Directory
4045                   ln   01;36  Symbolic link
4046                   pi   33     Named pipe (FIFO)
4047                   so   01;35  Socket
4048                   do   01;35  Door
4049                   bd   01;33  Block device
4050                   cd   01;32  Character device
4051                   ex   01;32  Executable file
4052                   mi   (none) Missing file (defaults to fi)
4053                   or   (none) Orphaned symbolic link (defaults to ln)
4054                   lc   ^[[    Left code
4055                   rc   m      Right code
4056                   ec   (none) End code (replaces lc+no+rc)
4057
4058               You  need to include only the variables you want to change from
4059               the default.
4060
4061               File names can also be colorized based on  filename  extension.
4062               This  is  specified  in the LS_COLORS variable using the syntax
4063               "*ext=string".  For example, using ISO 6429 codes, to color all
4064               C-language  source files blue you would specify "*.c=34".  This
4065               would color all files ending in .c in blue (34) color.
4066
4067               Control characters can be written either in C-style-escaped no‐
4068               tation,  or in stty-like ^-notation.  The C-style notation adds
4069               ^[ for Escape, _ for  a  normal  space  character,  and  ?  for
4070               Delete.   In  addition,  the ^[ escape character can be used to
4071               override the default interpretation of ^[, ^, : and =.
4072
4073               Each file will be written as <lc> <color-code> <rc>  <filename>
4074               <ec>.   If  the  <ec> code is undefined, the sequence <lc> <no>
4075               <rc> will be used instead.  This is generally  more  convenient
4076               to  use,  but  less general.  The left, right and end codes are
4077               provided so you don't have to type common parts over  and  over
4078               again  and  to  support weird terminals; you will generally not
4079               need to change them at all unless your terminal  does  not  use
4080               ISO 6429 color sequences but a different system.
4081
4082               If your terminal does use ISO 6429 color codes, you can compose
4083               the type codes (i.e., all except the lc, rc, and ec codes) from
4084               numerical  commands  separated  by semicolons.  The most common
4085               commands are:
4086
4087                       0   to restore default color
4088                       1   for brighter colors
4089                       4   for underlined text
4090                       5   for flashing text
4091                       30  for black foreground
4092                       31  for red foreground
4093                       32  for green foreground
4094                       33  for yellow (or brown) foreground
4095                       34  for blue foreground
4096                       35  for purple foreground
4097                       36  for cyan foreground
4098                       37  for white (or gray) foreground
4099                       40  for black background
4100                       41  for red background
4101                       42  for green background
4102                       43  for yellow (or brown) background
4103                       44  for blue background
4104                       45  for purple background
4105                       46  for cyan background
4106                       47  for white (or gray) background
4107
4108               Not all commands will work on all systems or display devices.
4109
4110               A few terminal programs do not recognize the default  end  code
4111               properly.   If all text gets colorized after you do a directory
4112               listing, try changing the no and fi codes from 0 to the numeri‐
4113               cal codes for your standard fore- and background colors.
4114
4115       MACHTYPE (+)
4116               The  machine  type  (microprocessor class or machine model), as
4117               determined at compile time.
4118
4119       NOREBIND (+)
4120               If set, printable characters are not  rebound  to  self-insert-
4121               command.  See Native Language System support.
4122
4123       OSTYPE (+)
4124               The operating system, as determined at compile time.
4125
4126       PATH    A colon-separated list of directories in which to look for exe‐
4127               cutables.  Equivalent to the path shell variable, but in a dif‐
4128               ferent format.
4129
4130       PWD (+) Equivalent  to  the cwd shell variable, but not synchronized to
4131               it; updated only after an actual directory change.
4132
4133       REMOTEHOST (+)
4134               The host from which the user has logged in remotely, if this is
4135               the  case  and  the shell is able to determine it.  Set only if
4136               the shell was so compiled; see the version shell variable.
4137
4138       SHLVL (+)
4139               Equivalent to the shlvl shell variable.
4140
4141       SYSTYPE (+)
4142               The current system type.  (Domain/OS only)
4143
4144       TERM    Equivalent to the term shell variable.
4145
4146       TERMCAP The terminal capability string.  See Terminal management.
4147
4148       USER    Equivalent to the user shell variable.
4149
4150       VENDOR (+)
4151               The vendor, as determined at compile time.
4152
4153       VISUAL  The pathname to a default full-screen editor.  Used by the run-
4154               fg-editor  editor  command if the the editors shell variable is
4155               unset.  See also the EDITOR environment variable.
4156

FILES

4158       /etc/csh.cshrc  Read first by every shell.  ConvexOS, Stellix and Intel
4159                       use  /etc/cshrc  and  NeXTs  use /etc/cshrc.std.  A/UX,
4160                       AMIX, Cray and IRIX have no equivalent in  csh(1),  but
4161                       read  this  file  in tcsh anyway.  Solaris 2.x does not
4162                       have it either, but tcsh reads /etc/.cshrc.  (+)
4163       /etc/csh.login  Read by login shells after  /etc/csh.cshrc.   ConvexOS,
4164                       Stellix  and  Intel  use /etc/login, NeXTs use /etc/lo‐
4165                       gin.std, Solaris 2.x uses /etc/.login and  A/UX,  AMIX,
4166                       Cray and IRIX use /etc/cshrc.
4167       ~/.tcshrc (+)   Read by every shell after /etc/csh.cshrc or its equiva‐
4168                       lent.
4169       ~/.cshrc        Read by every shell, if ~/.tcshrc doesn't exist,  after
4170                       /etc/csh.cshrc  or  its  equivalent.   This manual uses
4171                       `~/.tcshrc' to mean `~/.tcshrc or, if ~/.tcshrc is  not
4172                       found, ~/.cshrc'.
4173       ~/.history      Read  by  login  shells  after ~/.tcshrc if savehist is
4174                       set, but see also histfile.
4175       ~/.login        Read by login shells  after  ~/.tcshrc  or  ~/.history.
4176                       The  shell  may be compiled to read ~/.login before in‐
4177                       stead of after ~/.tcshrc and ~/.history; see  the  ver‐
4178                       sion shell variable.
4179       ~/.cshdirs (+)  Read by login shells after ~/.login if savedirs is set,
4180                       but see also dirsfile.
4181       /etc/csh.logout Read by login shells at logout.  ConvexOS, Stellix  and
4182                       Intel  use  /etc/logout  and NeXTs use /etc/logout.std.
4183                       A/UX, AMIX, Cray and IRIX have no equivalent in csh(1),
4184                       but  read  this  file in tcsh anyway.  Solaris 2.x does
4185                       not have it either, but tcsh reads /etc/.logout.  (+)
4186       ~/.logout       Read by login shells at logout after /etc/csh.logout or
4187                       its equivalent.
4188       /bin/sh         Used  to  interpret  shell  scripts not starting with a
4189                       `#'.
4190       /tmp/sh*        Temporary file for `<<'.
4191       /etc/passwd     Source of home directories for `~name' substitutions.
4192
4193       The order in which startup files are read may differ if the  shell  was
4194       so compiled; see Startup and shutdown and the version shell variable.
4195

NEW FEATURES (+)

4197       This  manual  describes tcsh as a single entity, but experienced csh(1)
4198       users will want to pay special attention to tcsh's new features.
4199
4200       A command-line editor, which supports emacs(1)-style or vi(1)-style key
4201       bindings.  See The command-line editor and Editor commands.
4202
4203       Programmable,  interactive word completion and listing.  See Completion
4204       and listing and the complete and uncomplete builtin commands.
4205
4206       Spelling correction (q.v.) of filenames, commands and variables.
4207
4208       Editor commands (q.v.) which perform other useful functions in the mid‐
4209       dle of typed commands, including documentation lookup (run-help), quick
4210       editor restarting (run-fg-editor) and  command  resolution  (which-com‐
4211       mand).
4212
4213       An  enhanced  history  mechanism.  Events in the history list are time-
4214       stamped.  See also the history command and its associated  shell  vari‐
4215       ables,  the  previously  undocumented `#' event specifier and new modi‐
4216       fiers under History substitution, the *-history,  history-search-*,  i-
4217       search-*,  vi-search-*  and  toggle-literal-history editor commands and
4218       the histlit shell variable.
4219
4220       Enhanced directory parsing and directory stack handling.  See  the  cd,
4221       pushd, popd and dirs commands and their associated shell variables, the
4222       description of Directory stack substitution, the dirstack, owd and sym‐
4223       links shell variables and the normalize-command and normalize-path edi‐
4224       tor commands.
4225
4226       Negation in glob-patterns.  See Filename substitution.
4227
4228       New File inquiry operators (q.v.) and a  filetest  builtin  which  uses
4229       them.
4230
4231       A  variety  of  Automatic,  periodic  and timed events (q.v.) including
4232       scheduled events, special aliases, automatic logout and terminal  lock‐
4233       ing, command timing and watching for logins and logouts.
4234
4235       Support for the Native Language System (see Native Language System sup‐
4236       port), OS variant features (see OS variant support and  the  echo_style
4237       shell variable) and system-dependent file locations (see FILES).
4238
4239       Extensive terminal-management capabilities.  See Terminal management.
4240
4241       New  builtin  commands including builtins, hup, ls-F, newgrp, printenv,
4242       which and where (q.v.).
4243
4244       New variables that make useful  information  easily  available  to  the
4245       shell.   See  the  gid, loginsh, oid, shlvl, tcsh, tty, uid and version
4246       shell variables and the HOST, REMOTEHOST, VENDOR, OSTYPE  and  MACHTYPE
4247       environment variables.
4248
4249       A new syntax for including useful information in the prompt string (see
4250       prompt), and special prompts for loops  and  spelling  correction  (see
4251       prompt2 and prompt3).
4252
4253       Read-only variables.  See Variable substitution.
4254

BUGS

4256       When  a  suspended command is restarted, the shell prints the directory
4257       it started in if this is different from the  current  directory.   This
4258       can be misleading (i.e., wrong) as the job may have changed directories
4259       internally.
4260
4261       Shell builtin functions are  not  stoppable/restartable.   Command  se‐
4262       quences  of  the  form `a ; b ; c' are also not handled gracefully when
4263       stopping is attempted.  If you suspend `b', the shell will then immedi‐
4264       ately execute `c'.  This is especially noticeable if this expansion re‐
4265       sults from an alias.  It suffices to place the sequence of commands  in
4266       ()'s to force it to a subshell, i.e., `( a ; b ; c )'.
4267
4268       Control  over tty output after processes are started is primitive; per‐
4269       haps this will inspire someone to work on a good virtual  terminal  in‐
4270       terface.   In a virtual terminal interface much more interesting things
4271       could be done with output control.
4272
4273       Alias substitution is most often used to clumsily simulate shell proce‐
4274       dures; shell procedures should be provided rather than aliases.
4275
4276       Control  structures  should  be  parsed rather than being recognized as
4277       built-in commands.  This would allow control commands to be placed any‐
4278       where,  to  be combined with `|', and to be used with `&' and `;' meta‐
4279       syntax.
4280
4281       foreach doesn't ignore here documents when looking for its end.
4282
4283       It should be possible to use the `:' modifiers on the output of command
4284       substitutions.
4285
4286       The  screen  update for lines longer than the screen width is very poor
4287       if the terminal cannot move the cursor up (i.e., terminal type `dumb').
4288
4289       HPATH and NOREBIND don't need to be environment variables.
4290
4291       Glob-patterns which do not use `?', `*' or `[]' or which  use  `{}'  or
4292       `~' are not negated correctly.
4293
4294       The  single-command  form of if does output redirection even if the ex‐
4295       pression is false and the command is not executed.
4296
4297       ls-F includes file identification characters when sorting filenames and
4298       does not handle control characters in filenames well.  It cannot be in‐
4299       terrupted.
4300
4301       Command substitution supports multiple commands and conditions, but not
4302       cycles or backward gotos.
4303
4304       Report bugs at https://bugs.astron.com/, preferably with fixes.  If you
4305       want to help maintain and test tcsh, add yourself to the  mailing  list
4306       in https://mailman.astron.com/.
4307

THE T IN TCSH

4309       In 1964, DEC produced the PDP-6.  The PDP-10 was a later re-implementa‐
4310       tion.  It was re-christened the DECsystem-10 in 1970  or  so  when  DEC
4311       brought out the second model, the KI10.
4312
4313       TENEX was created at Bolt, Beranek & Newman (a Cambridge, Massachusetts
4314       think tank) in 1972 as an experiment in demand-paged virtual memory op‐
4315       erating systems.  They built a new pager for the DEC PDP-10 and created
4316       the OS to go with it.  It was extremely successful in academia.
4317
4318       In 1975, DEC brought out a new model of the PDP-10, the KL10; they  in‐
4319       tended  to  have  only a version of TENEX, which they had licensed from
4320       BBN, for the new box.  They called their version TOPS-20  (their  capi‐
4321       talization  is  trademarked).   A  lot of TOPS-10 users (`The OPerating
4322       System for PDP-10') objected; thus DEC found themselves supporting  two
4323       incompatible systems on the same hardware--but then there were 6 on the
4324       PDP-11!
4325
4326       TENEX, and TOPS-20 to version 3, had command  completion  via  a  user-
4327       code-level subroutine library called ULTCMD.  With version 3, DEC moved
4328       all that capability and more into the monitor (`kernel'  for  you  Unix
4329       types),  accessed by the COMND% JSYS (`Jump to SYStem' instruction, the
4330       supervisor call mechanism [are my IBM roots also showing?]).
4331
4332       The creator of tcsh was impressed by this feature and several others of
4333       TENEX and TOPS-20, and created a version of csh which mimicked them.
4334

LIMITATIONS

4336       The system limits argument lists to ARG_MAX characters.
4337
4338       The  number of arguments to a command which involves filename expansion
4339       is limited to 1/6th the number of characters  allowed  in  an  argument
4340       list.
4341
4342       Command  substitutions  may  substitute no more characters than are al‐
4343       lowed in an argument list.
4344
4345       To detect looping, the shell restricts the number  of  alias  substitu‐
4346       tions on a single line to 20.
4347

SEE ALSO

4349       csh(1),  emacs(1), ls(1), newgrp(1), sh(1), setpath(1), stty(1), su(1),
4350       tset(1),  vi(1),  x(1),  access(2),  execve(2),   fork(2),   killpg(2),
4351       pipe(2), setrlimit(2), sigvec(2), stat(2), umask(2), vfork(2), wait(2),
4352       malloc(3),  setlocale(3),  tty(4),  a.out(5),  termcap(5),  environ(7),
4353       termio(7), Introduction to the C Shell
4354

VERSION

4356       This manual documents tcsh 6.22.04 (Astron) 2021-04-26.
4357

AUTHORS

4359       William Joy
4360         Original author of csh(1)
4361       J.E. Kulp, IIASA, Laxenburg, Austria
4362         Job control and directory stack features
4363       Ken Greer, HP Labs, 1981
4364         File name completion
4365       Mike Ellis, Fairchild, 1983
4366         Command name recognition/completion
4367       Paul Placeway, Ohio State CIS Dept., 1983-1993
4368         Command  line  editor,  prompt routines, new glob syntax and numerous
4369         fixes and speedups
4370       Karl Kleinpaste, CCI 1983-4
4371         Special  aliases,  directory  stack  extraction  stuff,  login/logout
4372         watch, scheduled events, and the idea of the new prompt format
4373       Rayan Zachariassen, University of Toronto, 1984
4374         ls-F  and  which  builtins  and numerous bug fixes, modifications and
4375         speedups
4376       Chris Kingsley, Caltech
4377         Fast storage allocator routines
4378       Chris Grevstad, TRW, 1987
4379         Incorporated 4.3BSD csh into tcsh
4380       Christos S. Zoulas, Cornell U. EE Dept., 1987-94
4381         Ports  to  HPUX,  SVR2  and  SVR3,  a  SysV   version   of   getwd.c,
4382         SHORT_STRINGS support and a new version of sh.glob.c
4383       James J Dempsey, BBN, and Paul Placeway, OSU, 1988
4384         A/UX port
4385       Daniel Long, NNSC, 1988
4386         wordchars
4387       Patrick Wolfe, Kuck and Associates, Inc., 1988
4388         vi mode cleanup
4389       David C Lawrence, Rensselaer Polytechnic Institute, 1989
4390         autolist and ambiguous completion listing
4391       Alec Wolman, DEC, 1989
4392         Newlines in the prompt
4393       Matt Landau, BBN, 1989
4394         ~/.tcshrc
4395       Ray Moody, Purdue Physics, 1989
4396         Magic space bar history expansion
4397       Mordechai ????, Intel, 1989
4398         printprompt() fixes and additions
4399       Kazuhiro Honda, Dept. of Computer Science, Keio University, 1989
4400         Automatic spelling correction and prompt3
4401       Per Hedeland, Ellemtel, Sweden, 1990-
4402         Various bugfixes, improvements and manual updates
4403       Hans J. Albertsson (Sun Sweden)
4404         ampm, settc and telltc
4405       Michael Bloom
4406         Interrupt handling fixes
4407       Michael Fine, Digital Equipment Corp
4408         Extended key support
4409       Eric Schnoebelen, Convex, 1990
4410         Convex  support, lots of csh bug fixes, save and restore of directory
4411         stack
4412       Ron Flax, Apple, 1990
4413         A/UX 2.0 (re)port
4414       Dan Oscarsson, LTH Sweden, 1990
4415         NLS support and simulated NLS support for non NLS sites, fixes
4416       Johan Widen, SICS Sweden, 1990
4417         shlvl, Mach support, correct-line, 8-bit printing
4418       Matt Day, Sanyo Icon, 1990
4419         POSIX termio support, SysV limit fixes
4420       Jaap Vermeulen, Sequent, 1990-91
4421         Vi mode fixes, expand-line, window change fixes, Symmetry port
4422       Martin Boyer, Institut de recherche d'Hydro-Quebec, 1991
4423         autolist beeping options, modified the history search to  search  for
4424         the whole string from the beginning of the line to the cursor.
4425       Scott Krotz, Motorola, 1991
4426         Minix port
4427       David Dawes, Sydney U. Australia, Physics Dept., 1991
4428         SVR4 job control fixes
4429       Jose Sousa, Interactive Systems Corp., 1991
4430         Extended vi fixes and vi delete command
4431       Marc Horowitz, MIT, 1991
4432         ANSIfication fixes, new exec hashing code, imake fixes, where
4433       Bruce Sterling Woodcock, sterling@netcom.com, 1991-1995
4434         ETA  and Pyramid port, Makefile and lint fixes, ignoreeof=n addition,
4435         and various other portability changes and bug fixes
4436       Jeff Fink, 1992
4437         complete-word-fwd and complete-word-back
4438       Harry C. Pulley, 1992
4439         Coherent port
4440       Andy Phillips, Mullard Space Science Lab U.K., 1992
4441         VMS-POSIX port
4442       Beto Appleton, IBM Corp., 1992
4443         Walking process group fixes, csh bug fixes, POSIX file  tests,  POSIX
4444         SIGHUP
4445       Scott Bolte, Cray Computer Corp., 1992
4446         CSOS port
4447       Kaveh R. Ghazi, Rutgers University, 1992
4448         Tek,  m88k,  Titan and Masscomp ports and fixes.  Added autoconf sup‐
4449         port.
4450       Mark Linderman, Cornell University, 1992
4451         OS/2 port
4452       Mika Liljeberg, liljeber@kruuna.Helsinki.FI, 1992
4453         Linux port
4454       Tim P. Starrin, NASA Langley Research Center Operations, 1993
4455         Read-only variables
4456       Dave Schweisguth, Yale University, 1993-4
4457         New man page and tcsh.man2html
4458       Larry Schwimmer, Stanford University, 1993
4459         AFS and HESIOD patches
4460       Luke Mewburn, RMIT University, 1994-6
4461         Enhanced directory printing in prompt, added ellipsis and rprompt.
4462       Edward Hutchins, Silicon Graphics Inc., 1996
4463         Added implicit cd.
4464       Martin Kraemer, 1997
4465         Ported to Siemens Nixdorf EBCDIC machine
4466       Amol Deshpande, Microsoft, 1997
4467         Ported to WIN32 (Windows/95 and Windows/NT); wrote  all  the  missing
4468         library and message catalog code to interface to Windows.
4469       Taga Nayuta, 1998
4470         Color ls additions.
4471

THANKS TO

4473       Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig,
4474       Diana Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky and  all
4475       the other people at Ohio State for suggestions and encouragement
4476
4477       All  the people on the net, for putting up with, reporting bugs in, and
4478       suggesting new additions to each and every version
4479
4480       Richard M. Alderson III, for writing the `T in tcsh' section
4481
4482
4483
4484Astron 6.22.04                    26 Apr 2021                          TCSH(1)
Impressum