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
28       login 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
114       ~/.tcshrc  is  not found, ~/.cshrc, then the contents of ~/.history (or
115       the 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
118       after /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
129       login, usually go in one's ~/.login file.  Users who need  to  use  the
130       same  set  of  files with both csh(1) and tcsh can have only a ~/.cshrc
131       which checks for the existence of the tcsh shell variable (q.v.) before
132       using  tcsh-specific  commands,  or  can  have  both  a  ~/.cshrc and a
133       ~/.tcshrc which sources (see the builtin command) ~/.cshrc.   The  rest
134       of  this manual uses `~/.tcshrc' to mean `~/.tcshrc or, if ~/.tcshrc is
135       not 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
149       logout 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
217       example, 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
276       related  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
286       ignored 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),
299       because 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
301       under 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)
305       ignores case and 2) considers periods, hyphens  and  underscores  (`.',
306       `-'  and  `_')  to be word separators and hyphens and underscores to be
307       equivalent.  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
320       underscores are equivalent.  Periods, however, are  not  equivalent  to
321       hyphens 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
408       describes 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
506               vimode.
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
527               vimode.
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
535               beginning with the current contents of the input buffer  up  to
536               the  cursor  and  copies  it into the input buffer.  The search
537               string may be a glob-pattern (see Filename  substitution)  con‐
538               taining  `*',  `?',  `[]' or `{}'.  up-history and down-history
539               will proceed from the appropriate point in  the  history  list.
540               Emacs mode only.  See also history-search-forward and i-search-
541               back.
542
543       history-search-forward (M-n, M-N)
544               Like history-search-backward, but searches forward.
545
546       i-search-back (not bound)
547               Searches  backward  like  history-search-backward,  copies  the
548               first match into the input buffer with the cursor positioned at
549               the end of the pattern, and prompts with `bck: ' and the  first
550               match.   Additional  characters  may  be  typed  to  extend the
551               search, i-search-back may be typed to continue  searching  with
552               the  same  pattern,  wrapping around the history list if neces‐
553               sary, (i-search-back must be bound to a  single  character  for
554               this to work) or one of the following special characters may be
555               typed:
556
557                   ^W      Appends the rest of the word under  the  cursor  to
558                           the search pattern.
559                   delete (or any character bound to backward-delete-char)
560                           Undoes  the  effect of the last character typed and
561                           deletes a character  from  the  search  pattern  if
562                           appropriate.
563                   ^G      If  the  previous search was successful, aborts the
564                           entire search.  If not, goes back to the last  suc‐
565                           cessful search.
566                   escape  Ends  the  search,  leaving the current line in the
567                           input buffer.
568
569               Any other character not bound to self-insert-command terminates
570               the  search,  leaving the current line in the input buffer, and
571               is then interpreted as normal input.  In particular, a carriage
572               return  causes  the  current  line to be executed.  See also i-
573               search-fwd and history-search-backward.  Word boundary behavior
574               modified by vimode.
575
576       i-search-fwd (not bound)
577               Like i-search-back, but searches forward.  Word boundary behav‐
578               ior modified by vimode.
579
580       insert-last-word (M-_)
581               Inserts the last word of the previous input  line  (`!$')  into
582               the input buffer.  See also copy-prev-word.
583
584       list-choices (M-^D)
585               Lists  completion  possibilities  as described under Completion
586               and listing.  See  also  delete-char-or-list-or-eof  and  list-
587               choices-raw.
588
589       list-choices-raw (^X-^D)
590               Like list-choices, but ignores user-defined completions.
591
592       list-glob (^X-g, ^X-G)
593               Lists  (via  the ls-F builtin) matches to the glob-pattern (see
594               Filename substitution) to the left of the cursor.
595
596       list-or-eof (not bound)
597               Does list-choices or end-of-file on an empty  line.   See  also
598               delete-char-or-list-or-eof.
599
600       magic-space (not bound)
601               Expands history substitutions in the current line, like expand-
602               history, and inserts a space.  magic-space is  designed  to  be
603               bound to the space bar, but is not bound by default.
604
605       normalize-command (^X-?)
606               Searches  for  the  current  word  in PATH and, if it is found,
607               replaces it with the full  path  to  the  executable.   Special
608               characters  are  quoted.   Aliases  are expanded and quoted but
609               commands within aliases are not.  This command is  useful  with
610               commands  that  take commands as arguments, e.g., `dbx' and `sh
611               -x'.
612
613       normalize-path (^X-n, ^X-N)
614               Expands the current word as described under the  `expand'  set‐
615               ting of the symlinks shell variable.
616
617       overwrite-mode (unbound)
618               Toggles between input and overwrite modes.
619
620       run-fg-editor (M-^Z)
621               Saves  the current input line and looks for a stopped job where
622               the file name portion of its first word is found in the editors
623               shell variable.  If editors is not set, then the file name por‐
624               tion of the EDITOR environment variable (`ed' if unset) and the
625               VISUAL  environment  variable (`vi' if unset) will be used.  If
626               such a job is found, it is restarted as if `fg %job'  had  been
627               typed.  This is used to toggle back and forth between an editor
628               and the shell easily.  Some people bind this command to `^Z' so
629               they can do this even more easily.
630
631       run-help (M-h, M-H)
632               Searches  for  documentation  on the current command, using the
633               same notion of `current command' as  the  completion  routines,
634               and  prints  it.   There  is no way to use a pager; run-help is
635               designed for short help files.  If the special  alias  helpcom‐
636               mand  is  defined,  it  is  run with the command name as a sole
637               argument.  Else, documentation should be in a file  named  com‐
638               mand.help,  command.1,  command.6,  command.8 or command, which
639               should be in one of the directories listed in the  HPATH  envi‐
640               ronment variable.  If there is more than one help file only the
641               first is printed.
642
643       self-insert-command (text characters)
644               In insert mode (the default), inserts the typed character  into
645               the  input line after the character under the cursor.  In over‐
646               write mode, replaces the character under the  cursor  with  the
647               typed  character.  The input mode is normally preserved between
648               lines, but the inputmode shell variable can be set to  `insert'
649               or  `overwrite' to put the editor in that mode at the beginning
650               of each line.  See also overwrite-mode.
651
652       sequence-lead-in (arrow prefix, meta prefix, ^X)
653               Indicates that the following characters are part of a multi-key
654               sequence.   Binding  a  command  to a multi-key sequence really
655               creates two bindings: the first character  to  sequence-lead-in
656               and the whole sequence to the command.  All sequences beginning
657               with a character  bound  to  sequence-lead-in  are  effectively
658               bound to undefined-key unless bound to another command.
659
660       spell-line (M-$)
661               Attempts to correct the spelling of each word in the input buf‐
662               fer, like spell-word, but ignores words whose  first  character
663               is  one  of  `-', `!', `^' or `%', or which contain `\', `*' or
664               `?', to avoid problems with  switches,  substitutions  and  the
665               like.  See Spelling correction.
666
667       spell-word (M-s, M-S)
668               Attempts  to  correct  the  spelling  of  the  current  word as
669               described under Spelling correction.  Checks each component  of
670               a word which appears to be a pathname.
671
672       toggle-literal-history (M-r, M-R)
673               Expands  or `unexpands' history substitutions in the input buf‐
674               fer.  See also expand-history and the  autoexpand  shell  vari‐
675               able.
676
677       undefined-key (any unbound key)
678               Beeps.
679
680       up-history (up-arrow, ^P)
681               Copies  the  previous  entry in the history list into the input
682               buffer.  If histlit is set, uses the literal form of the entry.
683               May  be  repeated to step up through the history list, stopping
684               at the top.
685
686       upcase-word (M-u, M-U)
687               Uppercase the characters from cursor to end  of  current  word.
688               Word boundary behavior modified by vimode.
689
690       vi-beginning-of-next-word (not bound)
691               Vi  goto  the beginning of next word.  Word boundary and cursor
692               behavior modified by vimode.
693
694       vi-eword (not bound)
695               Vi move to the end of the current word.  Word boundary behavior
696               modified by vimode.
697
698       vi-search-back (?)
699               Prompts  with `?' for a search string (which may be a glob-pat‐
700               tern, as with history-search-backward),  searches  for  it  and
701               copies it into the input buffer.  The bell rings if no match is
702               found.  Hitting return ends the  search  and  leaves  the  last
703               match  in the input buffer.  Hitting escape ends the search and
704               executes the match.  vi mode only.
705
706       vi-search-fwd (/)
707               Like vi-search-back, but searches forward.
708
709       which-command (M-?)
710               Does a which (see the description of the  builtin  command)  on
711               the first word of the input buffer.
712
713       yank-pop (M-y)
714               When  executed  immediately  after  a yank or another yank-pop,
715               replaces the yanked string with the next previous  string  from
716               the  killring.  This  also has the effect of rotating the kill‐
717               ring, such  that  this  string  will  be  considered  the  most
718               recently  killed  by  a  later yank command. Repeating yank-pop
719               will cycle through the killring any number of times.
720
721   Lexical structure
722       The shell splits input lines into words at blanks and tabs.   The  spe‐
723       cial  characters  `&', `|', `;', `<', `>', `(', and `)' and the doubled
724       characters `&&', `||', `<<' and `>>' are always separate words, whether
725       or not they are surrounded by whitespace.
726
727       When the shell's input is not a terminal, the character `#' is taken to
728       begin a comment.  Each `#' and the rest of the input line on  which  it
729       appears is discarded before further parsing.
730
731       A  special  character  (including a blank or tab) may be prevented from
732       having its special meaning, and possibly made part of another word,  by
733       preceding  it  with  a backslash (`\') or enclosing it in single (`''),
734       double (`"') or backward (``') quotes.  When  not  otherwise  quoted  a
735       newline  preceded  by a `\' is equivalent to a blank, but inside quotes
736       this sequence results in a newline.
737
738       Furthermore, all Substitutions (see below) except History  substitution
739       can  be  prevented  by  enclosing  the strings (or parts of strings) in
740       which they appear with single quotes or by quoting the crucial  charac‐
741       ter(s) (e.g., `$' or ``' for Variable substitution or Command substitu‐
742       tion respectively) with `\'.   (Alias  substitution  is  no  exception:
743       quoting  in any way any character of a word for which an alias has been
744       defined prevents substitution of the alias.  The usual way  of  quoting
745       an  alias  is  to precede it with a backslash.) History substitution is
746       prevented by backslashes but not by single quotes.  Strings quoted with
747       double  or  backward  quotes  undergo Variable substitution and Command
748       substitution, but other substitutions are prevented.
749
750       Text inside single or double quotes becomes a single word (or  part  of
751       one).   Metacharacters  in these strings, including blanks and tabs, do
752       not form separate words.  Only in one special case (see Command substi‐
753       tution  below)  can a double-quoted string yield parts of more than one
754       word; single-quoted strings never do.   Backward  quotes  are  special:
755       they  signal Command substitution (q.v.), which may result in more than
756       one word.
757
758       Quoting complex strings, particularly strings which themselves  contain
759       quoting characters, can be confusing.  Remember that quotes need not be
760       used as they are in human writing!  It may be easier to  quote  not  an
761       entire  string,  but only those parts of the string which need quoting,
762       using different types of quoting to do so if appropriate.
763
764       The backslash_quote shell variable (q.v.) can  be  set  to  make  back‐
765       slashes  always  quote  `\',  `'',  and `"'.  (+) This may make complex
766       quoting tasks easier, but it can cause syntax errors in csh(1) scripts.
767
768   Substitutions
769       We now describe the various transformations the shell performs  on  the
770       input  in  the  order in which they occur.  We note in passing the data
771       structures involved and the commands and variables which  affect  them.
772       Remember  that  substitutions  can be prevented by quoting as described
773       under Lexical structure.
774
775   History substitution
776       Each command, or ``event'', input from the terminal  is  saved  in  the
777       history  list.   The  previous command is always saved, and the history
778       shell variable can be set to a number to save that many commands.   The
779       histdup  shell variable can be set to not save duplicate events or con‐
780       secutive duplicate events.
781
782       Saved commands are numbered sequentially from 1 and  stamped  with  the
783       time.   It  is not usually necessary to use event numbers, but the cur‐
784       rent event number can be made part of the prompt by placing an  `!'  in
785       the prompt shell variable.
786
787       By  default history entries are displayed by printing each parsed token
788       separated by space; thus the redirection operator `>&!'  will  be  dis‐
789       played as `> & !'.
790
791       The  shell  actually saves history in expanded and literal (unexpanded)
792       forms.  If the histlit shell variable is set, commands that display and
793       store history use the literal form.
794
795       The  history  builtin  command  can print, store in a file, restore and
796       clear the history list at any time, and the savehist and histfile shell
797       variables  can be set to store the history list automatically on logout
798       and restore it on login.
799
800       History substitutions introduce words from the history  list  into  the
801       input  stream, making it easy to repeat commands, repeat arguments of a
802       previous command in the current command, or fix  spelling  mistakes  in
803       the  previous  command  with  little typing and a high degree of confi‐
804       dence.
805
806       History substitutions begin with the character  `!'.   They  may  begin
807       anywhere  in  the  input  stream, but they do not nest.  The `!' may be
808       preceded by a `\' to prevent its special meaning;  for  convenience,  a
809       `!'  is  passed unchanged when it is followed by a blank, tab, newline,
810       `=' or `('.  History substitutions also occur when an input line begins
811       with  `^'.   This  special  abbreviation  will be described later.  The
812       characters used to signal history substitution (`!'  and  `^')  can  be
813       changed  by setting the histchars shell variable.  Any input line which
814       contains a history substitution is printed before it is executed.
815
816       A history substitution may have an ``event specification'', which indi‐
817       cates  the  event  from  which words are to be taken, a ``word designa‐
818       tor'', which selects particular words from the chosen event,  and/or  a
819       ``modifier'', which manipulates the selected words.
820
821       An event specification can be
822
823           n       A number, referring to a particular event
824           -n      An  offset,  referring  to  the  event n before the current
825                   event
826           #       The current  event.   This  should  be  used  carefully  in
827                   csh(1), where there is no check for recursion.  tcsh allows
828                   10 levels of recursion.  (+)
829           !       The previous event (equivalent to `-1')
830           s       The most recent event whose  first  word  begins  with  the
831                   string s
832           ?s?     The  most  recent  event  which contains the string s.  The
833                   second `?' can be omitted if it is immediately followed  by
834                   a newline.
835
836       For example, consider this bit of someone's history list:
837
838            9  8:30    nroff -man wumpus.man
839           10  8:31    cp wumpus.man wumpus.man.old
840           11  8:36    vi wumpus.man
841           12  8:37    diff wumpus.man.old wumpus.man
842
843       The  commands  are shown with their event numbers and time stamps.  The
844       current event, which we haven't typed in yet, is event 13.   `!11'  and
845       `!-2'  refer to event 11.  `!!' refers to the previous event, 12.  `!!'
846       can be abbreviated `!' if it is  followed  by  `:'  (`:'  is  described
847       below).   `!n' refers to event 9, which begins with `n'.  `!?old?' also
848       refers to event 12, which contains `old'.  Without word designators  or
849       modifiers  history  references simply expand to the entire event, so we
850       might type `!cp' to redo the copy command or `!!|more'  if  the  `diff'
851       output scrolled off the top of the screen.
852
853       History  references  may  be  insulated  from the surrounding text with
854       braces if necessary.  For example, `!vdoc' would  look  for  a  command
855       beginning  with  `vdoc',  and,  in  this  example,  not  find  one, but
856       `!{v}doc' would expand unambiguously to `vi  wumpus.mandoc'.   Even  in
857       braces, history substitutions do not nest.
858
859       (+) While csh(1) expands, for example, `!3d' to event 3 with the letter
860       `d' appended to it, tcsh expands it to the last  event  beginning  with
861       `3d';  only  completely numeric arguments are treated as event numbers.
862       This makes it possible to recall events  beginning  with  numbers.   To
863       expand `!3d' as in csh(1) say `!{3}d'.
864
865       To  select words from an event we can follow the event specification by
866       a `:' and a designator for the desired words.  The words  of  an  input
867       line are numbered from 0, the first (usually command) word being 0, the
868       second word (first argument) being 1, etc.  The basic word  designators
869       are:
870
871           0       The first (command) word
872           n       The nth argument
873           ^       The first argument, equivalent to `1'
874           $       The last argument
875           %       The word matched by an ?s? search
876           x-y     A range of words
877           -y      Equivalent to `0-y'
878           *       Equivalent  to `^-$', but returns nothing if the event con‐
879                   tains only 1 word
880           x*      Equivalent to `x-$'
881           x-      Equivalent to `x*', but omitting the last word (`$')
882
883       Selected words are inserted into the command line separated  by  single
884       blanks.   For example, the `diff' command in the previous example might
885       have been typed as `diff !!:1.old !!:1' (using `:1' to select the first
886       argument  from  the previous event) or `diff !-2:2 !-2:1' to select and
887       swap the arguments from the `cp' command.  If we didn't care about  the
888       order  of  the `diff' we might have said `diff !-2:1-2' or simply `diff
889       !-2:*'.  The `cp'  command  might  have  been  written  `cp  wumpus.man
890       !#:1.old',  using `#' to refer to the current event.  `!n:- hurkle.man'
891       would reuse the first two words from the `nroff' command to say  `nroff
892       -man hurkle.man'.
893
894       The `:' separating the event specification from the word designator can
895       be omitted if the argument selector begins with a `^', `$', `*', `%' or
896       `-'.   For  example,  our  `diff' command might have been `diff !!^.old
897       !!^' or, equivalently, `diff !!$.old !!$'.  However, if `!!' is  abbre‐
898       viated `!', an argument selector beginning with `-' will be interpreted
899       as an event specification.
900
901       A history reference may have a word designator but no event  specifica‐
902       tion.   It then references the previous command.  Continuing our `diff'
903       example, we could have said simply `diff !^.old  !^'  or,  to  get  the
904       arguments in the opposite order, just `diff !*'.
905
906       The  word  or  words  in  a history reference can be edited, or ``modi‐
907       fied'', by following it with one or more modifiers, each preceded by  a
908       `:':
909
910           h       Remove a trailing pathname component, leaving the head.
911           t       Remove all leading pathname components, leaving the tail.
912           r       Remove a filename extension `.xxx', leaving the root name.
913           e       Remove all but the extension.
914           u       Uppercase the first lowercase letter.
915           l       Lowercase the first uppercase letter.
916           s/l/r/  Substitute  l  for  r.   l is simply a string like r, not a
917                   regular expression as in the eponymous ed(1) command.   Any
918                   character  may  be used as the delimiter in place of `/'; a
919                   `\' can be used to quote the delimiter inside l and r.  The
920                   character  `&'  in  the r is replaced by l; `\' also quotes
921                   `&'.  If l is empty (``''), the l from a previous substitu‐
922                   tion  or  the  s  from a previous search or event number in
923                   event specification is used.  The trailing delimiter may be
924                   omitted if it is immediately followed by a newline.
925           &       Repeat the previous substitution.
926           g       Apply the following modifier once to each word.
927           a (+)   Apply the following modifier as many times as possible to a
928                   single word.  `a' and `g' can be used together to  apply  a
929                   modifier  globally.   With  the `s' modifier, only the pat‐
930                   terns contained in the original word are  substituted,  not
931                   patterns that contain any substitution result.
932           p       Print the new command line but do not execute it.
933           q       Quote  the  substituted words, preventing further substitu‐
934                   tions.
935           Q       Same as q but in addition preserve  empty  variables  as  a
936                   string  containing a NUL.  This is useful to preserve posi‐
937                   tional arguments for example:
938                       > set args=('arg 1' '' 'arg 3')
939                       > tcsh -f -c 'echo ${#argv}' $args:gQ
940                       3
941           x       Like q, but break into words at blanks, tabs and newlines.
942
943       Modifiers are applied to only the first modifiable word (unless `g'  is
944       used).  It is an error for no word to be modifiable.
945
946       For  example,  the `diff' command might have been written as `diff wum‐
947       pus.man.old !#^:r', using `:r' to remove `.old' from the first argument
948       on  the  same  line (`!#^').  We could say `echo hello out there', then
949       `echo !*:u' to capitalize `hello', `echo !*:au' to say it out loud,  or
950       `echo  !*:agu'  to really shout.  We might follow `mail -s "I forgot my
951       password" rot' with `!:s/rot/root' to correct the  spelling  of  `root'
952       (but see Spelling correction for a different approach).
953
954       There is a special abbreviation for substitutions.  `^', when it is the
955       first character on an input line, is equivalent  to  `!:s^'.   Thus  we
956       might have said `^rot^root' to make the spelling correction in the pre‐
957       vious example.  This is the only history substitution  which  does  not
958       explicitly begin with `!'.
959
960       (+) In csh as such, only one modifier may be applied to each history or
961       variable expansion.  In tcsh, more than one may be used, for example
962
963           % mv wumpus.man /usr/man/man1/wumpus.1
964           % man !$:t:r
965           man wumpus
966
967       In csh, the result would be `wumpus.1:r'.  A substitution followed by a
968       colon may need to be insulated from it with braces:
969
970           > mv a.out /usr/games/wumpus
971           > setenv PATH !$:h:$PATH
972           Bad ! modifier: $.
973           > setenv PATH !{-2$:h}:$PATH
974           setenv PATH /usr/games:/bin:/usr/bin:.
975
976       The  first attempt would succeed in csh but fails in tcsh, because tcsh
977       expects another modifier after the second colon rather than `$'.
978
979       Finally, history can be accessed through the editor as well as  through
980       the  substitutions  just described.  The up- and down-history, history-
981       search-backward and -forward, i-search-back  and  -fwd,  vi-search-back
982       and  -fwd,  copy-prev-word  and insert-last-word editor commands search
983       for events in the history list and copy them  into  the  input  buffer.
984       The toggle-literal-history editor command switches between the expanded
985       and literal forms of history lines in the input buffer.  expand-history
986       and expand-line expand history substitutions in the current word and in
987       the entire input buffer respectively.
988
989   Alias substitution
990       The shell maintains a list of aliases  which  can  be  set,  unset  and
991       printed  by  the  alias  and unalias commands.  After a command line is
992       parsed into simple commands (see Commands) the first word of each  com‐
993       mand,  left-to-right, is checked to see if it has an alias.  If so, the
994       first word is replaced by the alias.  If the alias contains  a  history
995       reference, it undergoes History substitution (q.v.) as though the orig‐
996       inal command were the previous input line.  If the alias does not  con‐
997       tain a history reference, the argument list is left untouched.
998
999       Thus  if  the  alias  for `ls' were `ls -l' the command `ls /usr' would
1000       become `ls -l /usr', the argument list here being undisturbed.  If  the
1001       alias  for `lookup' were `grep !^ /etc/passwd' then `lookup bill' would
1002       become `grep bill /etc/passwd'.   Aliases  can  be  used  to  introduce
1003       parser metasyntax.  For example, `alias print 'pr \!* | lpr'' defines a
1004       ``command'' (`print') which pr(1)s its arguments to the line printer.
1005
1006       Alias substitution is repeated until the first word of the command  has
1007       no  alias.  If an alias substitution does not change the first word (as
1008       in the previous example) it is flagged to prevent a loop.  Other  loops
1009       are detected and cause an error.
1010
1011       Some aliases are referred to by the shell; see Special aliases.
1012
1013   Variable substitution
1014       The  shell  maintains a list of variables, each of which has as value a
1015       list of zero or more words.  The values of shell variables can be  dis‐
1016       played  and  changed with the set and unset commands.  The system main‐
1017       tains its own list of ``environment'' variables.   These  can  be  dis‐
1018       played and changed with printenv, setenv and unsetenv.
1019
1020       (+)  Variables  may  be made read-only with `set -r' (q.v.).  Read-only
1021       variables may not be modified or unset; attempting to do so will  cause
1022       an  error.  Once made read-only, a variable cannot be made writable, so
1023       `set -r' should be used with caution.  Environment variables cannot  be
1024       made read-only.
1025
1026       Some  variables  are  set  by  the  shell  or  referred  to by it.  For
1027       instance, the argv variable is an image of the shell's  argument  list,
1028       and  words  of  this  variable's value are referred to in special ways.
1029       Some of the variables referred to by the shell are toggles;  the  shell
1030       does  not  care  what their value is, only whether they are set or not.
1031       For instance, the verbose variable is a  toggle  which  causes  command
1032       input  to  be  echoed.   The -v command line option sets this variable.
1033       Special shell variables lists all variables which are  referred  to  by
1034       the shell.
1035
1036       Other  operations treat variables numerically.  The `@' command permits
1037       numeric calculations to be performed and the result assigned to a vari‐
1038       able.   Variable  values  are,  however, always represented as (zero or
1039       more) strings.  For the purposes of numeric operations, the null string
1040       is considered to be zero, and the second and subsequent words of multi-
1041       word values are ignored.
1042
1043       After the input line is aliased and parsed, and before each command  is
1044       executed,  variable  substitution is performed keyed by `$' characters.
1045       This expansion can be prevented by preceding the `$' with a `\'  except
1046       within  `"'s  where  it  always  occurs, and within `''s where it never
1047       occurs.  Strings quoted by ``' are interpreted later (see Command  sub‐
1048       stitution  below) so `$' substitution does not occur there until later,
1049       if at all.  A `$' is passed unchanged if followed by a blank,  tab,  or
1050       end-of-line.
1051
1052       Input/output redirections are recognized before variable expansion, and
1053       are variable expanded separately.   Otherwise,  the  command  name  and
1054       entire  argument  list  are expanded together.  It is thus possible for
1055       the first (command) word (to this point)  to  generate  more  than  one
1056       word,  the  first  of  which  becomes the command name, and the rest of
1057       which become arguments.
1058
1059       Unless enclosed in `"' or given the `:q' modifier the results of  vari‐
1060       able  substitution  may eventually be command and filename substituted.
1061       Within `"', a variable whose value consists of multiple  words  expands
1062       to a (portion of a) single word, with the words of the variable's value
1063       separated by blanks.  When the `:q' modifier is applied to a  substitu‐
1064       tion  the  variable  will expand to multiple words with each word sepa‐
1065       rated by a blank and quoted to prevent later command or  filename  sub‐
1066       stitution.
1067
1068       The  following metasequences are provided for introducing variable val‐
1069       ues into the shell input.  Except as noted, it is an error to reference
1070       a variable which is not set.
1071
1072       $name
1073       ${name} Substitutes the words of the value of variable name, each sepa‐
1074               rated by a blank.  Braces insulate name from following  charac‐
1075               ters which would otherwise be part of it.  Shell variables have
1076               names consisting of letters and digits starting with a  letter.
1077               The  underscore  character  is considered a letter.  If name is
1078               not a shell variable, but is set in the environment, then  that
1079               value  is returned (but some of the other forms given below are
1080               not available in this case).
1081       $name[selector]
1082       ${name[selector]}
1083               Substitutes only the selected words from  the  value  of  name.
1084               The  selector  is subjected to `$' substitution and may consist
1085               of a single number or two numbers  separated  by  a  `-'.   The
1086               first word of a variable's value is numbered `1'.  If the first
1087               number of a range is omitted it defaults to `1'.  If  the  last
1088               member  of  a  range  is  omitted it defaults to `$#name'.  The
1089               selector `*' selects all words.  It is not an error for a range
1090               to be empty if the second argument is omitted or in range.
1091       $0      Substitutes  the  name  of the file from which command input is
1092               being read.  An error occurs if the name is not known.
1093       $number
1094       ${number}
1095               Equivalent to `$argv[number]'.
1096       $*      Equivalent to `$argv', which is equivalent to `$argv[*]'.
1097
1098       The `:' modifiers described  under  History  substitution,  except  for
1099       `:p',  can be applied to the substitutions above.  More than one may be
1100       used.  (+) Braces may be needed to  insulate  a  variable  substitution
1101       from a literal colon just as with History substitution (q.v.); any mod‐
1102       ifiers must appear within the braces.
1103
1104       The following substitutions can not be modified with `:' modifiers.
1105
1106       $?name
1107       ${?name}
1108               Substitutes the string `1' if name is set, `0' if it is not.
1109       $?0     Substitutes `1' if the current input filename is known, `0'  if
1110               it is not.  Always `0' in interactive shells.
1111       $#name
1112       ${#name}
1113               Substitutes the number of words in name.
1114       $#      Equivalent to `$#argv'.  (+)
1115       $%name
1116       ${%name}
1117               Substitutes the number of characters in name.  (+)
1118       $%number
1119       ${%number}
1120               Substitutes the number of characters in $argv[number].  (+)
1121       $?      Equivalent to `$status'.  (+)
1122       $$      Substitutes the (decimal) process number of the (parent) shell.
1123       $!      Substitutes the (decimal) process number of the last background
1124               process started by this shell.  (+)
1125       $_      Substitutes the command line of the last command executed.  (+)
1126       $<      Substitutes a line from the standard  input,  with  no  further
1127               interpretation  thereafter.   It  can  be used to read from the
1128               keyboard in a shell script.  (+) While csh always quotes $<, as
1129               if  it  were equivalent to `$<:q', tcsh does not.  Furthermore,
1130               when tcsh is waiting for a line to be typed the user  may  type
1131               an  interrupt  to interrupt the sequence into which the line is
1132               to be substituted, but csh does not allow this.
1133
1134       The editor command expand-variables, normally bound to `^X-$',  can  be
1135       used to interactively expand individual variables.
1136
1137   Command, filename and directory stack substitution
1138       The remaining substitutions are applied selectively to the arguments of
1139       builtin commands.  This means that portions of  expressions  which  are
1140       not  evaluated  are  not  subjected  to these expansions.  For commands
1141       which are not internal to the shell, the command  name  is  substituted
1142       separately from the argument list.  This occurs very late, after input-
1143       output redirection is performed, and in a child of the main shell.
1144
1145   Command substitution
1146       Command substitution is indicated by a command enclosed  in  ``'.   The
1147       output  from  such  a  command is broken into separate words at blanks,
1148       tabs and newlines, and null words are discarded.  The output  is  vari‐
1149       able and command substituted and put in place of the original string.
1150
1151       Command  substitutions  inside  double  quotes  (`"') retain blanks and
1152       tabs; only newlines force new words.  The single final newline does not
1153       force  a  new word in any case.  It is thus possible for a command sub‐
1154       stitution to yield only part of a word, even if the command  outputs  a
1155       complete line.
1156
1157       By  default, the shell since version 6.12 replaces all newline and car‐
1158       riage return characters in the command by spaces.  If this is  switched
1159       off by unsetting csubstnonl, newlines separate commands as usual.
1160
1161   Filename substitution
1162       If a word contains any of the characters `*', `?', `[' or `{' or begins
1163       with the character `~' it is a  candidate  for  filename  substitution,
1164       also  known  as  ``globbing''.  This word is then regarded as a pattern
1165       (``glob-pattern''), and replaced with an alphabetically sorted list  of
1166       file names which match the pattern.
1167
1168       In matching filenames, the character `.' at the beginning of a filename
1169       or immediately following a `/', as well as the character  `/'  must  be
1170       matched  explicitly  (unless  either  globdot  or  globstar or both are
1171       set(+)).  The character `*' matches any string of characters, including
1172       the  null string.  The character `?' matches any single character.  The
1173       sequence `[...]' matches any one of the  characters  enclosed.   Within
1174       `[...]',  a  pair  of characters separated by `-' matches any character
1175       lexically between the two.
1176
1177       (+) Some glob-patterns can be negated: The  sequence  `[^...]'  matches
1178       any  single  character not specified by the characters and/or ranges of
1179       characters in the braces.
1180
1181       An entire glob-pattern can also be negated with `^':
1182
1183           > echo *
1184           bang crash crunch ouch
1185           > echo ^cr*
1186           bang ouch
1187
1188       Glob-patterns which do not use `?', `*', or `[]' or which use  `{}'  or
1189       `~' (below) are not negated correctly.
1190
1191       The  metanotation  `a{b,c,d}e' is a shorthand for `abe ace ade'.  Left-
1192       to-right order is preserved: `/usr/source/s1/{oldls,ls}.c'  expands  to
1193       `/usr/source/s1/oldls.c  /usr/source/s1/ls.c'.   The results of matches
1194       are  sorted  separately  at  a  low  level  to  preserve  this   order:
1195       `../{memo,*box}'  might expand to `../memo ../box ../mbox'.  (Note that
1196       `memo' was not sorted with the results of matching `*box'.)  It is  not
1197       an  error  when this construct expands to files which do not exist, but
1198       it is possible to get an error from a command  to  which  the  expanded
1199       list  is  passed.  This construct may be nested.  As a special case the
1200       words `{', `}' and `{}' are passed undisturbed.
1201
1202       The character `~' at the beginning of a filename refers to home  direc‐
1203       tories.   Standing  alone,  i.e., `~', it expands to the invoker's home
1204       directory as reflected in the value of the home shell  variable.   When
1205       followed by a name consisting of letters, digits and `-' characters the
1206       shell searches for a user with that name  and  substitutes  their  home
1207       directory;  thus `~ken' might expand to `/usr/ken' and `~ken/chmach' to
1208       `/usr/ken/chmach'.  If the character `~' is  followed  by  a  character
1209       other  than  a letter or `/' or appears elsewhere than at the beginning
1210       of a word, it is left undisturbed.   A  command  like  `setenv  MANPATH
1211       /usr/man:/usr/local/man:~/lib/man'  does not, therefore, do home direc‐
1212       tory substitution as one might hope.
1213
1214       It is an error for a glob-pattern containing `*', `?', `[' or `~', with
1215       or without `^', not to match any files.  However, only one pattern in a
1216       list of glob-patterns must match a file (so that,  e.g.,  `rm  *.a  *.c
1217       *.o'  would  fail  only if there were no files in the current directory
1218       ending in `.a', `.c', or `.o'), and if the nonomatch shell variable  is
1219       set  a  pattern  (or  list  of  patterns) which matches nothing is left
1220       unchanged rather than causing an error.
1221
1222       The globstar shell variable can be set to allow `**' or `***' as a file
1223       glob  pattern  that  matches  any  string  of characters including `/',
1224       recursively traversing any existing sub-directories.  For example,  `ls
1225       **.c'  will  list  all  the .c files in the current directory tree.  If
1226       used by itself, it will match zero or more  sub-directories  (e.g.  `ls
1227       /usr/include/**/time.h'  will  list  any  file  named  `time.h'  in the
1228       /usr/include directory tree; `ls /usr/include/**time.h' will match  any
1229       file  in  the  /usr/include  directory tree ending in `time.h'; and `ls
1230       /usr/include/**time**.h' will match any .h file with `time' either in a
1231       subdirectory name or in the filename itself).  To prevent problems with
1232       recursion, the `**' glob-pattern will not descend into a symbolic  link
1233       containing a directory.  To override this, use `***' (+)
1234
1235       The  noglob shell variable can be set to prevent filename substitution,
1236       and the expand-glob editor command, normally bound to  `^X-*',  can  be
1237       used to interactively expand individual filename substitutions.
1238
1239   Directory stack substitution (+)
1240       The  directory stack is a list of directories, numbered from zero, used
1241       by the pushd, popd and dirs builtin commands (q.v.).  dirs  can  print,
1242       store in a file, restore and clear the directory stack at any time, and
1243       the savedirs and dirsfile shell variables  can  be  set  to  store  the
1244       directory  stack  automatically on logout and restore it on login.  The
1245       dirstack shell variable can be examined to see the directory stack  and
1246       set to put arbitrary directories into the directory stack.
1247
1248       The character `=' followed by one or more digits expands to an entry in
1249       the directory stack.  The special case `=-' expands to the last  direc‐
1250       tory in the stack.  For example,
1251
1252           > dirs -v
1253           0       /usr/bin
1254           1       /usr/spool/uucp
1255           2       /usr/accts/sys
1256           > echo =1
1257           /usr/spool/uucp
1258           > echo =0/calendar
1259           /usr/bin/calendar
1260           > echo =-
1261           /usr/accts/sys
1262
1263       The  noglob  and  nonomatch  shell variables and the expand-glob editor
1264       command apply to directory stack as well as filename substitutions.
1265
1266   Other substitutions (+)
1267       There  are  several  more  transformations  involving  filenames,   not
1268       strictly related to the above but mentioned here for completeness.  Any
1269       filename may be expanded to a full  path  when  the  symlinks  variable
1270       (q.v.)  is  set  to `expand'.  Quoting prevents this expansion, and the
1271       normalize-path editor command does it on demand.  The normalize-command
1272       editor  command  expands  commands  in  PATH into full paths on demand.
1273       Finally, cd and pushd  interpret  `-'  as  the  old  working  directory
1274       (equivalent  to the shell variable owd).  This is not a substitution at
1275       all, but an abbreviation recognized by only those  commands.   Nonethe‐
1276       less, it too can be prevented by quoting.
1277
1278   Commands
1279       The  next  three  sections describe how the shell executes commands and
1280       deals with their input and output.
1281
1282   Simple commands, pipelines and sequences
1283       A simple command is a sequence of words, the first of  which  specifies
1284       the  command to be executed.  A series of simple commands joined by `|'
1285       characters forms a pipeline.  The output of each command in a  pipeline
1286       is connected to the input of the next.
1287
1288       Simple  commands  and  pipelines may be joined into sequences with `;',
1289       and will be executed sequentially.  Commands and pipelines can also  be
1290       joined  into  sequences with `||' or `&&', indicating, as in the C lan‐
1291       guage, that the second is to be executed only if  the  first  fails  or
1292       succeeds respectively.
1293
1294       A  simple  command,  pipeline or sequence may be placed in parentheses,
1295       `()', to form a simple command, which may in turn be a component  of  a
1296       pipeline  or sequence.  A command, pipeline or sequence can be executed
1297       without waiting for it to terminate by following it with an `&'.
1298
1299   Builtin and non-builtin command execution
1300       Builtin commands are executed within the shell.  If any component of  a
1301       pipeline except the last is a builtin command, the pipeline is executed
1302       in a subshell.
1303
1304       Parenthesized commands are always executed in a subshell.
1305
1306           (cd; pwd); pwd
1307
1308       thus prints the home directory, leaving you where  you  were  (printing
1309       this after the home directory), while
1310
1311           cd; pwd
1312
1313       leaves  you  in  the  home  directory.  Parenthesized commands are most
1314       often used to prevent cd from affecting the current shell.
1315
1316       When a command to be executed is found not to be a builtin command  the
1317       shell  attempts to execute the command via execve(2).  Each word in the
1318       variable path names a directory in which the shell will  look  for  the
1319       command.   If  the shell is not given a -f option, the shell hashes the
1320       names in these directories into an internal table so that it  will  try
1321       an  execve(2) in only a directory where there is a possibility that the
1322       command resides there.  This greatly speeds  command  location  when  a
1323       large  number of directories are present in the search path. This hash‐
1324       ing mechanism is not used:
1325
1326       1.  If hashing is turned explicitly off via unhash.
1327
1328       2.  If the shell was given a -f argument.
1329
1330       3.  For each directory component of path which does not  begin  with  a
1331           `/'.
1332
1333       4.  If the command contains a `/'.
1334
1335       In  the  above  four cases the shell concatenates each component of the
1336       path vector with the given command name to form a path name of  a  file
1337       which  it  then attempts to execute it. If execution is successful, the
1338       search stops.
1339
1340       If the file has execute permissions but is not  an  executable  to  the
1341       system  (i.e.,  it  is  neither  an executable binary nor a script that
1342       specifies its interpreter), then it is assumed to be a file  containing
1343       shell  commands  and a new shell is spawned to read it.  The shell spe‐
1344       cial alias may be set to specify an interpreter other  than  the  shell
1345       itself.
1346
1347       On  systems which do not understand the `#!' script interpreter conven‐
1348       tion the shell may be compiled to emulate it;  see  the  version  shell
1349       variable.  If so, the shell checks the first line of the file to see if
1350       it is of the form `#!interpreter arg ...'.  If it is, the shell  starts
1351       interpreter  with  the  given args and feeds the file to it on standard
1352       input.
1353
1354   Input/output
1355       The standard input and standard output of a command may  be  redirected
1356       with the following syntax:
1357
1358       < name  Open  file  name (which is first variable, command and filename
1359               expanded) as the standard input.
1360       << word Read the shell input up to a line which is identical  to  word.
1361               word  is not subjected to variable, filename or command substi‐
1362               tution, and each input line is compared to word before any sub‐
1363               stitutions  are done on this input line.  Unless a quoting `\',
1364               `"', `' or ``' appears in word variable and  command  substitu‐
1365               tion  is  performed  on  the intervening lines, allowing `\' to
1366               quote `$', `\' and ``'.  Commands which  are  substituted  have
1367               all  blanks, tabs, and newlines preserved, except for the final
1368               newline which is dropped.  The resultant text is placed  in  an
1369               anonymous temporary file which is given to the command as stan‐
1370               dard input.
1371       > name
1372       >! name
1373       >& name
1374       >&! name
1375               The file name is used as standard output.  If the file does not
1376               exist  then it is created; if the file exists, it is truncated,
1377               its previous contents being lost.
1378
1379               If the shell variable noclobber is set, then the file must  not
1380               exist  or  be  a  character  special  file (e.g., a terminal or
1381               `/dev/null') or an error results.  This helps prevent  acciden‐
1382               tal  destruction  of  files.  In this case the `!' forms can be
1383               used to suppress this check.  If notempty is given  in  noclob‐
1384               ber,  `>'  is  allowed  on  empty  files;  if  ask  is  set, an
1385               interacive confirmation is presented, rather than an error.
1386
1387               The forms involving `&' route the diagnostic  output  into  the
1388               specified  file  as  well  as  the  standard  output.   name is
1389               expanded in the same way as `<' input filenames are.
1390       >> name
1391       >>& name
1392       >>! name
1393       >>&! name
1394               Like `>', but appends output to the end of name.  If the  shell
1395               variable noclobber is set, then it is an error for the file not
1396               to exist, unless one of the `!' forms is given.
1397
1398       A command receives the environment in which the shell  was  invoked  as
1399       modified by the input-output parameters and the presence of the command
1400       in a pipeline.  Thus, unlike some previous shells, commands run from  a
1401       file  of  shell  commands have no access to the text of the commands by
1402       default; rather they receive the original standard input of the  shell.
1403       The `<<' mechanism should be used to present inline data.  This permits
1404       shell command scripts to function as components of pipelines and allows
1405       the  shell  to  block  read  its input.  Note that the default standard
1406       input for a command run detached is not the empty file  /dev/null,  but
1407       the original standard input of the shell.  If this is a terminal and if
1408       the process attempts to read from the terminal, then the  process  will
1409       block and the user will be notified (see Jobs).
1410
1411       Diagnostic output may be directed through a pipe with the standard out‐
1412       put.  Simply use the form `|&' rather than just `|'.
1413
1414       The shell cannot presently  redirect  diagnostic  output  without  also
1415       redirecting  standard  output,  but  `(command > output-file) >& error-
1416       file' is often an acceptable workaround.  Either output-file or  error-
1417       file may be `/dev/tty' to send output to the terminal.
1418
1419   Features
1420       Having  described  how  the  shell accepts, parses and executes command
1421       lines, we now turn to a variety of its useful features.
1422
1423   Control flow
1424       The shell contains a number of commands which can be used  to  regulate
1425       the  flow  of  control in command files (shell scripts) and (in limited
1426       but useful ways) from terminal input.  These commands  all  operate  by
1427       forcing the shell to reread or skip in its input and, due to the imple‐
1428       mentation, restrict the placement of some of the commands.
1429
1430       The foreach, switch, and while statements, as well as the  if-then-else
1431       form  of  the if statement, require that the major keywords appear in a
1432       single simple command on an input line as shown below.
1433
1434       If the shell's input is not seekable, the shell buffers up input  when‐
1435       ever a loop is being read and performs seeks in this internal buffer to
1436       accomplish the rereading implied by the loop.  (To the extent that this
1437       allows, backward gotos will succeed on non-seekable inputs.)
1438
1439   Expressions
1440       The  if,  while and exit builtin commands use expressions with a common
1441       syntax.  The expressions can include any of the operators described  in
1442       the  next  three  sections.  Note that the @ builtin command (q.v.) has
1443       its own separate syntax.
1444
1445   Logical, arithmetical and comparison operators
1446       These operators are similar to those of C and have the same precedence.
1447       They include
1448
1449           ||  &&  |  ^  &  ==  !=  =~  !~  <=  >=
1450           <  > <<  >>  +  -  *  /  %  !  ~  (  )
1451
1452       Here  the  precedence  increases to the right, `==' `!=' `=~' and `!~',
1453       `<=' `>=' `<' and `>', `<<' and `>>', `+' and  `-',  `*'  `/'  and  `%'
1454       being, in groups, at the same level.  The `==' `!=' `=~' and `!~' oper‐
1455       ators compare their arguments as strings; all others  operate  on  num‐
1456       bers.   The  operators `=~' and `!~' are like `!=' and `==' except that
1457       the right hand side  is  a  glob-pattern  (see  Filename  substitution)
1458       against  which the left hand operand is matched.  This reduces the need
1459       for use of the switch builtin command in shell scripts when all that is
1460       really needed is pattern matching.
1461
1462       Null  or  missing  arguments  are  considered  `0'.  The results of all
1463       expressions are strings, which represent decimal numbers.  It is impor‐
1464       tant  to note that no two components of an expression can appear in the
1465       same word; except when adjacent to components of expressions which  are
1466       syntactically  significant to the parser (`&' `|' `<' `>' `(' `)') they
1467       should be surrounded by spaces.
1468
1469   Command exit status
1470       Commands can be executed in expressions and their exit status  returned
1471       by enclosing them in braces (`{}').  Remember that the braces should be
1472       separated from the words of the command by spaces.  Command  executions
1473       succeed, returning true, i.e., `1', if the command exits with status 0,
1474       otherwise they fail, returning false, i.e., `0'.  If more detailed sta‐
1475       tus information is required then the command should be executed outside
1476       of an expression and the status shell variable examined.
1477
1478   File inquiry operators
1479       Some of these operators perform true/false tests on files  and  related
1480       objects.  They are of the form -op file, where op is one of
1481
1482           r   Read access
1483           w   Write access
1484           x   Execute access
1485           X   Executable  in the path or shell builtin, e.g., `-X ls' and `-X
1486               ls-F' are generally true, but `-X /bin/ls' is not (+)
1487           e   Existence
1488           o   Ownership
1489           z   Zero size
1490           s   Non-zero size (+)
1491           f   Plain file
1492           d   Directory
1493           l   Symbolic link (+) *
1494           b   Block special file (+)
1495           c   Character special file (+)
1496           p   Named pipe (fifo) (+) *
1497           S   Socket special file (+) *
1498           u   Set-user-ID bit is set (+)
1499           g   Set-group-ID bit is set (+)
1500           k   Sticky bit is set (+)
1501           t   file (which must be a digit) is an open file descriptor  for  a
1502               terminal device (+)
1503           R   Has been migrated (Convex only) (+)
1504           L   Applies  subsequent  operators in a multiple-operator test to a
1505               symbolic link rather than to the file to which the link  points
1506               (+) *
1507
1508       file  is command and filename expanded and then tested to see if it has
1509       the specified relationship to the real user.  If file does not exist or
1510       is  inaccessible  or, for the operators indicated by `*', if the speci‐
1511       fied file type does not exist on the current system, then all inquiries
1512       return false, i.e., `0'.
1513
1514       These  operators may be combined for conciseness: `-xy file' is equiva‐
1515       lent to `-x file && -y file'.  (+) For example, `-fx' is true  (returns
1516       `1') for plain executable files, but not for directories.
1517
1518       L may be used in a multiple-operator test to apply subsequent operators
1519       to a symbolic link rather than to the file to which  the  link  points.
1520       For  example, `-lLo' is true for links owned by the invoking user.  Lr,
1521       Lw and Lx are always true for links and false for non-links.  L  has  a
1522       different  meaning  when it is the last operator in a multiple-operator
1523       test; see below.
1524
1525       It is possible but not useful, and  sometimes  misleading,  to  combine
1526       operators  which  expect  file to be a file with operators which do not
1527       (e.g., X and t).  Following L with a non-file operator can lead to par‐
1528       ticularly strange results.
1529
1530       Other  operators  return  other information, i.e., not just `0' or `1'.
1531       (+) They have the same format as before; op may be one of
1532
1533           A       Last file access time, as the number of seconds  since  the
1534                   epoch
1535           A:      Like A, but in timestamp format, e.g., `Fri May 14 16:36:10
1536                   1993'
1537           M       Last file modification time
1538           M:      Like M, but in timestamp format
1539           C       Last inode modification time
1540           C:      Like C, but in timestamp format
1541           D       Device number
1542           I       Inode number
1543           F       Composite file identifier, in the form device:inode
1544           L       The name of the file pointed to by a symbolic link
1545           N       Number of (hard) links
1546           P       Permissions, in octal, without leading zero
1547           P:      Like P, with leading zero
1548           Pmode   Equivalent to `-P file & mode', e.g., `-P22  file'  returns
1549                   `22'  if  file  is  writable by group and other, `20' if by
1550                   group only, and `0' if by neither
1551           Pmode:  Like Pmode, with leading zero
1552           U       Numeric userid
1553           U:      Username, or the numeric userid if the username is unknown
1554           G       Numeric groupid
1555           G:      Groupname, or the  numeric  groupid  if  the  groupname  is
1556                   unknown
1557           Z       Size, in bytes
1558
1559       Only one of these operators may appear in a multiple-operator test, and
1560       it must be the last.  Note that L has a different meaning at the end of
1561       and  elsewhere  in  a  multiple-operator  test.  Because `0' is a valid
1562       return value for many of these operators, they do not return  `0'  when
1563       they fail: most return `-1', and F returns `:'.
1564
1565       If  the  shell  is  compiled  with POSIX defined (see the version shell
1566       variable), the result of a file inquiry is based on the permission bits
1567       of  the  file  and not on the result of the access(2) system call.  For
1568       example, if one tests a file with -w whose permissions would ordinarily
1569       allow writing but which is on a file system mounted read-only, the test
1570       will succeed in a POSIX shell but fail in a non-POSIX shell.
1571
1572       File inquiry operators can also be evaluated with the filetest  builtin
1573       command (q.v.) (+).
1574
1575   Jobs
1576       The  shell  associates  a  job with each pipeline.  It keeps a table of
1577       current jobs, printed by the jobs command, and assigns them small inte‐
1578       ger  numbers.  When a job is started asynchronously with `&', the shell
1579       prints a line which looks like
1580
1581           [1] 1234
1582
1583       indicating that the job which was started asynchronously was job number
1584       1 and had one (top-level) process, whose process id was 1234.
1585
1586       If  you are running a job and wish to do something else you may hit the
1587       suspend key (usually `^Z'), which sends a STOP signal  to  the  current
1588       job.  The shell will then normally indicate that the job has been `Sus‐
1589       pended' and print another prompt.  If the listjobs  shell  variable  is
1590       set,  all  jobs  will be listed like the jobs builtin command; if it is
1591       set to `long' the listing will be in long format, like `jobs -l'.   You
1592       can  then manipulate the state of the suspended job.  You can put it in
1593       the ``background'' with the bg command or run some other  commands  and
1594       eventually  bring  the  job back into the ``foreground'' with fg.  (See
1595       also the run-fg-editor editor command.)  A `^Z'  takes  effect  immedi‐
1596       ately  and is like an interrupt in that pending output and unread input
1597       are discarded when it is typed.  The wait builtin  command  causes  the
1598       shell to wait for all background jobs to complete.
1599
1600       The  `^]' key sends a delayed suspend signal, which does not generate a
1601       STOP signal until a program attempts to read(2) it, to the current job.
1602       This  can  usefully be typed ahead when you have prepared some commands
1603       for a job which you wish to stop after it has read them.  The `^Y'  key
1604       performs  this function in csh(1); in tcsh, `^Y' is an editing command.
1605       (+)
1606
1607       A job being run in the background stops if it tries to  read  from  the
1608       terminal.   Background jobs are normally allowed to produce output, but
1609       this can be disabled by giving the command `stty tostop'.  If  you  set
1610       this  tty  option, then background jobs will stop when they try to pro‐
1611       duce output like they do when they try to read input.
1612
1613       There are several ways to refer to jobs in the  shell.   The  character
1614       `%'  introduces  a job name.  If you wish to refer to job number 1, you
1615       can name it as `%1'.  Just naming a job brings it  to  the  foreground;
1616       thus  `%1' is a synonym for `fg %1', bringing job 1 back into the fore‐
1617       ground.  Similarly, saying `%1 &' resumes job 1 in the background, just
1618       like  `bg %1'.  A job can also be named by an unambiguous prefix of the
1619       string typed in to start it: `%ex' would normally restart  a  suspended
1620       ex(1)  job,  if there were only one suspended job whose name began with
1621       the string `ex'.  It is also possible to say `%?string'  to  specify  a
1622       job whose text contains string, if there is only one such job.
1623
1624       The shell maintains a notion of the current and previous jobs.  In out‐
1625       put pertaining to jobs, the current job is marked with a  `+'  and  the
1626       previous  job with a `-'.  The abbreviations `%+', `%', and (by analogy
1627       with the syntax of the history mechanism) `%%' all refer to the current
1628       job, and `%-' refers to the previous job.
1629
1630       The job control mechanism requires that the stty(1) option `new' be set
1631       on some systems.  It is an artifact from a `new' implementation of  the
1632       tty  driver  which  allows  generation of interrupt characters from the
1633       keyboard to tell jobs to stop.  See stty(1) and the setty builtin  com‐
1634       mand for details on setting options in the new tty driver.
1635
1636   Status reporting
1637       The shell learns immediately whenever a process changes state.  It nor‐
1638       mally informs you whenever a job becomes blocked  so  that  no  further
1639       progress  is  possible, but only right before it prints a prompt.  This
1640       is done so that it does not otherwise disturb your work.  If,  however,
1641       you  set  the  shell variable notify, the shell will notify you immedi‐
1642       ately of changes of status in background jobs.  There is also  a  shell
1643       command  notify which marks a single process so that its status changes
1644       will be immediately reported.  By  default  notify  marks  the  current
1645       process;  simply  say  `notify' after starting a background job to mark
1646       it.
1647
1648       When you try to leave the shell while jobs are  stopped,  you  will  be
1649       warned that `There are suspended jobs.' You may use the jobs command to
1650       see what they are.  If you do this or immediately try  to  exit  again,
1651       the  shell will not warn you a second time, and the suspended jobs will
1652       be terminated.
1653
1654   Automatic, periodic and timed events (+)
1655       There are various ways to run commands and take other actions automati‐
1656       cally  at  various  times in the ``life cycle'' of the shell.  They are
1657       summarized here, and described in detail under the appropriate  Builtin
1658       commands, Special shell variables and Special aliases.
1659
1660       The  sched  builtin command puts commands in a scheduled-event list, to
1661       be executed by the shell at a given time.
1662
1663       The beepcmd, cwdcmd, periodic,  precmd,  postcmd,  and  jobcmd  Special
1664       aliases  can  be  set, respectively, to execute commands when the shell
1665       wants to ring the bell, when the working directory changes, every  tpe‐
1666       riod  minutes,  before  each prompt, before each command gets executed,
1667       after each command gets executed, and when  a  job  is  started  or  is
1668       brought into the foreground.
1669
1670       The  autologout  shell variable can be set to log out or lock the shell
1671       after a given number of minutes of inactivity.
1672
1673       The mail shell variable can be set to check for new mail periodically.
1674
1675       The printexitvalue shell variable can be set to print the  exit  status
1676       of commands which exit with a status other than zero.
1677
1678       The  rmstar  shell  variable can be set to ask the user, when `rm *' is
1679       typed, if that is really what was meant.
1680
1681       The time shell variable can be set to execute the time builtin  command
1682       after the completion of any process that takes more than a given number
1683       of CPU seconds.
1684
1685       The watch and who shell variables can be set to  report  when  selected
1686       users log in or out, and the log builtin command reports on those users
1687       at any time.
1688
1689   Native Language System support (+)
1690       The shell is eight bit clean (if so compiled;  see  the  version  shell
1691       variable)  and  thus  supports  character sets needing this capability.
1692       NLS support differs depending on whether or not the shell was  compiled
1693       to  use  the  system's NLS (again, see version).  In either case, 7-bit
1694       ASCII is the default character code (e.g., the classification of  which
1695       characters  are  printable)  and  sorting,  and  changing  the  LANG or
1696       LC_CTYPE environment variables causes a check for possible  changes  in
1697       these respects.
1698
1699       When  using  the  system's  NLS, the setlocale(3) function is called to
1700       determine appropriate character code/classification and sorting  (e.g.,
1701       a  'en_CA.UTF-8'  would yield "UTF-8" as a character code).  This func‐
1702       tion typically examines the LANG and  LC_CTYPE  environment  variables;
1703       refer  to the system documentation for further details.  When not using
1704       the system's NLS, the shell simulates  it  by  assuming  that  the  ISO
1705       8859-1  character  set is used whenever either of the LANG and LC_CTYPE
1706       variables are set, regardless of their values.  Sorting is not affected
1707       for the simulated NLS.
1708
1709       In addition, with both real and simulated NLS, all printable characters
1710       in the range \200-\377, i.e., those  that  have  M-char  bindings,  are
1711       automatically  rebound to self-insert-command.  The corresponding bind‐
1712       ing for the escape-char sequence, if any, is left alone.  These charac‐
1713       ters are not rebound if the NOREBIND environment variable is set.  This
1714       may be useful for the simulated NLS  or  a  primitive  real  NLS  which
1715       assumes  full  ISO 8859-1.  Otherwise, all M-char bindings in the range
1716       \240-\377 are effectively undone.  Explicitly  rebinding  the  relevant
1717       keys with bindkey is of course still possible.
1718
1719       Unknown  characters (i.e., those that are neither printable nor control
1720       characters) are printed in the format \nnn.  If the tty is not in 8 bit
1721       mode,  other  8  bit characters are printed by converting them to ASCII
1722       and using standout mode.  The shell never changes the 7/8 bit  mode  of
1723       the  tty  and tracks user-initiated changes of 7/8 bit mode.  NLS users
1724       (or, for that matter, those who want to use a meta  key)  may  need  to
1725       explicitly  set  the  tty in 8 bit mode through the appropriate stty(1)
1726       command in, e.g., the ~/.login file.
1727
1728   OS variant support (+)
1729       A number of new builtin commands are provided to  support  features  in
1730       particular  operating  systems.   All  are  described  in detail in the
1731       Builtin commands section.
1732
1733       On  systems  that  support  TCF  (aix-ibm370,  aix-ps2),  getspath  and
1734       setspath  get  and set the system execution path, getxvers and setxvers
1735       get and set the experimental version prefix and migrate  migrates  pro‐
1736       cesses  between  sites.  The jobs builtin prints the site on which each
1737       job is executing.
1738
1739       Under BS2000, bs2cmd executes commands  of  the  underlying  BS2000/OSD
1740       operating system.
1741
1742       Under  Domain/OS,  inlib  adds shared libraries to the current environ‐
1743       ment, rootnode changes the rootnode and ver changes the systype.
1744
1745       Under Mach, setpath is equivalent to Mach's setpath(1).
1746
1747       Under Masscomp/RTU and Harris CX/UX, universe sets the universe.
1748
1749       Under Harris CX/UX, ucb or att runs a command under the specified  uni‐
1750       verse.
1751
1752       Under Convex/OS, warp prints or sets the universe.
1753
1754       The  VENDOR, OSTYPE and MACHTYPE environment variables indicate respec‐
1755       tively the vendor, operating system and  machine  type  (microprocessor
1756       class  or  machine model) of the system on which the shell thinks it is
1757       running.  These are particularly useful when sharing one's home  direc‐
1758       tory between several types of machines; one can, for example,
1759
1760           set path = (~/bin.$MACHTYPE /usr/ucb /bin /usr/bin .)
1761
1762       in  one's ~/.login and put executables compiled for each machine in the
1763       appropriate directory.
1764
1765       The version shell variable indicates what options were chosen when  the
1766       shell was compiled.
1767
1768       Note  also  the  newgrp builtin, the afsuser and echo_style shell vari‐
1769       ables and the system-dependent locations of  the  shell's  input  files
1770       (see FILES).
1771
1772   Signal handling
1773       Login  shells  ignore  interrupts when reading the file ~/.logout.  The
1774       shell ignores quit signals unless started with -q.  Login shells  catch
1775       the terminate signal, but non-login shells inherit the terminate behav‐
1776       ior from their parents.  Other signals have the values which the  shell
1777       inherited from its parent.
1778
1779       In  shell scripts, the shell's handling of interrupt and terminate sig‐
1780       nals can be controlled with onintr, and its handling of hangups can  be
1781       controlled with hup and nohup.
1782
1783       The  shell  exits on a hangup (see also the logout shell variable).  By
1784       default, the shell's children do too, but the shell does not send  them
1785       a hangup when it exits.  hup arranges for the shell to send a hangup to
1786       a child when it exits, and nohup sets a child to ignore hangups.
1787
1788   Terminal management (+)
1789       The shell uses  three  different  sets  of  terminal  (``tty'')  modes:
1790       `edit',  used  when editing, `quote', used when quoting literal charac‐
1791       ters, and `execute', used when executing  commands.   The  shell  holds
1792       some settings in each mode constant, so commands which leave the tty in
1793       a confused state do not interfere  with  the  shell.   The  shell  also
1794       matches  changes  in the speed and padding of the tty.  The list of tty
1795       modes that are kept constant can be  examined  and  modified  with  the
1796       setty  builtin.  Note that although the editor uses CBREAK mode (or its
1797       equivalent), it takes typed-ahead characters anyway.
1798
1799       The echotc, settc and telltc commands can be  used  to  manipulate  and
1800       debug terminal capabilities from the command line.
1801
1802       On systems that support SIGWINCH or SIGWINDOW, the shell adapts to win‐
1803       dow resizing automatically and adjusts the environment variables  LINES
1804       and  COLUMNS  if set.  If the environment variable TERMCAP contains li#
1805       and co# fields, the shell adjusts them to reflect the new window size.
1806

REFERENCE

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

ENVIRONMENT

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

FILES

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

NEW FEATURES (+)

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

BUGS

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

THE T IN TCSH

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

LIMITATIONS

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

SEE ALSO

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

VERSION

4361       This manual documents tcsh 6.22.03 (Astron) 2020-11-18.
4362

AUTHORS

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

THANKS TO

4478       Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig,
4479       Diana  Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky and all
4480       the other people at Ohio State for suggestions and encouragement
4481
4482       All the people on the net, for putting up with, reporting bugs in,  and
4483       suggesting new additions to each and every version
4484
4485       Richard M. Alderson III, for writing the `T in tcsh' section
4486
4487
4488
4489Astron 6.22.03                    11 Nov 2020                          TCSH(1)
Impressum