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

REFERENCE

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

ENVIRONMENT

3731       AFSUSER (+)
3732               Equivalent to the afsuser shell variable.
3733
3734       COLUMNS The number of columns in the terminal.   See  Terminal  manage‐
3735               ment.
3736
3737       DISPLAY Used by X Window System (see X(1)).  If set, the shell does not
3738               set autologout (q.v.).
3739
3740       EDITOR  The pathname to a default editor.  See also the VISUAL environ‐
3741               ment variable and the run-fg-editor editor command.
3742
3743       GROUP (+)
3744               Equivalent to the group shell variable.
3745
3746       HOME    Equivalent to the home shell variable.
3747
3748       HOST (+)
3749               Initialized  to  the  name of the machine on which the shell is
3750               running, as determined by the gethostname(2) system call.
3751
3752       HOSTTYPE (+)
3753               Initialized to the type of machine on which the shell  is  run‐
3754               ning, as determined at compile time.  This variable is obsolete
3755               and will be removed in a future version.
3756
3757       HPATH (+)
3758               A colon-separated list of directories  in  which  the  run-help
3759               editor command looks for command documentation.
3760
3761       LANG    Gives the preferred character environment.  See Native Language
3762               System support.
3763
3764       LC_CTYPE
3765               If set, only ctype character handling is changed.   See  Native
3766               Language System support.
3767
3768       LINES   The number of lines in the terminal.  See Terminal management.
3769
3770       LS_COLORS
3771               The  format  of  this variable is reminiscent of the termcap(5)
3772               file format; a colon-separated list of expressions of the  form
3773               "xx=string",  where "xx" is a two-character variable name.  The
3774               variables with their associated defaults are:
3775
3776                   no   0      Normal (non-filename) text
3777                   fi   0      Regular file
3778                   di   01;34  Directory
3779                   ln   01;36  Symbolic link
3780                   pi   33     Named pipe (FIFO)
3781                   so   01;35  Socket
3782                   do   01;35  Door
3783                   bd   01;33  Block device
3784                   cd   01;32  Character device
3785                   ex   01;32  Executable file
3786                   mi   (none) Missing file (defaults to fi)
3787                   or   (none) Orphaned symbolic link (defaults to ln)
3788                   lc   ^[[    Left code
3789                   rc   m      Right code
3790                   ec   (none) End code (replaces lc+no+rc)
3791
3792               You need to include only the variables you want to change  from
3793               the default.
3794
3795               File  names  can also be colorized based on filename extension.
3796               This is specified in the LS_COLORS variable  using  the  syntax
3797               "*ext=string".  For example, using ISO 6429 codes, to color all
3798               C-language source files blue you would specify "*.c=34".   This
3799               would color all files ending in .c in blue (34) color.
3800
3801               Control  characters  can  be  written either in C-style-escaped
3802               notation, or in stty-like  ^-notation.   The  C-style  notation
3803               adds  ^[  for Escape, _ for a normal space character, and ? for
3804               Delete.  In addition, the ^[ escape character can  be  used  to
3805               override the default interpretation of ^[, ^, : and =.
3806
3807               Each  file will be written as <lc> <color-code> <rc> <filename>
3808               <ec>.  If the <ec> code is undefined, the  sequence  <lc>  <no>
3809               <rc>  will  be used instead.  This is generally more convenient
3810               to use, but less general.  The left, right and  end  codes  are
3811               provided  so  you don't have to type common parts over and over
3812               again and to support weird terminals; you  will  generally  not
3813               need  to  change  them at all unless your terminal does not use
3814               ISO 6429 color sequences but a different system.
3815
3816               If your terminal does use ISO 6429 color codes, you can compose
3817               the type codes (i.e., all except the lc, rc, and ec codes) from
3818               numerical commands separated by semicolons.   The  most  common
3819               commands are:
3820
3821                       0   to restore default color
3822                       1   for brighter colors
3823                       4   for underlined text
3824                       5   for flashing text
3825                       30  for black foreground
3826                       31  for red foreground
3827                       32  for green foreground
3828                       33  for yellow (or brown) foreground
3829                       34  for blue foreground
3830                       35  for purple foreground
3831                       36  for cyan foreground
3832                       37  for white (or gray) foreground
3833                       40  for black background
3834                       41  for red background
3835                       42  for green background
3836                       43  for yellow (or brown) background
3837                       44  for blue background
3838                       45  for purple background
3839                       46  for cyan background
3840                       47  for white (or gray) background
3841
3842               Not all commands will work on all systems or display devices.
3843
3844               A  few  terminal programs do not recognize the default end code
3845               properly.  If all text gets colorized after you do a  directory
3846               listing, try changing the no and fi codes from 0 to the numeri‐
3847               cal codes for your standard fore- and background colors.
3848
3849       MACHTYPE (+)
3850               The machine type (microprocessor class or  machine  model),  as
3851               determined at compile time.
3852
3853       NOREBIND (+)
3854               If  set,  printable  characters are not rebound to self-insert-
3855               command.  See Native Language System support.
3856
3857       OSTYPE (+)
3858               The operating system, as determined at compile time.
3859
3860       PATH    A colon-separated list of directories in which to look for exe‐
3861               cutables.  Equivalent to the path shell variable, but in a dif‐
3862               ferent format.
3863
3864       PWD (+) Equivalent to the cwd shell variable, but not  synchronized  to
3865               it; updated only after an actual directory change.
3866
3867       REMOTEHOST (+)
3868               The host from which the user has logged in remotely, if this is
3869               the case and the shell is able to determine it.   Set  only  if
3870               the shell was so compiled; see the version shell variable.
3871
3872       SHLVL (+)
3873               Equivalent to the shlvl shell variable.
3874
3875       SYSTYPE (+)
3876               The current system type.  (Domain/OS only)
3877
3878       TERM    Equivalent to the term shell variable.
3879
3880       TERMCAP The terminal capability string.  See Terminal management.
3881
3882       USER    Equivalent to the user shell variable.
3883
3884       VENDOR (+)
3885               The vendor, as determined at compile time.
3886
3887       VISUAL  The  pathname  to  a  default full-screen editor.  See also the
3888               EDITOR environment variable and the run-fg-editor  editor  com‐
3889               mand.
3890

FILES

3892       /etc/csh.cshrc  Read first by every shell.  ConvexOS, Stellix and Intel
3893                       use /etc/cshrc and  NeXTs  use  /etc/cshrc.std.   A/UX,
3894                       AMIX,  Cray  and IRIX have no equivalent in csh(1), but
3895                       read this file in tcsh anyway.  Solaris  2.x  does  not
3896                       have it either, but tcsh reads /etc/.cshrc.  (+)
3897       /etc/csh.login  Read  by  login shells after /etc/csh.cshrc.  ConvexOS,
3898                       Stellix   and   Intel   use   /etc/login,   NeXTs   use
3899                       /etc/login.std,  Solaris 2.x uses /etc/.login and A/UX,
3900                       AMIX, Cray and IRIX use /etc/cshrc.
3901       ~/.tcshrc (+)   Read by every shell after /etc/csh.cshrc or its equiva‐
3902                       lent.
3903       ~/.cshrc        Read  by every shell, if ~/.tcshrc doesn't exist, after
3904                       /etc/csh.cshrc or its  equivalent.   This  manual  uses
3905                       `~/.tcshrc'  to mean `~/.tcshrc or, if ~/.tcshrc is not
3906                       found, ~/.cshrc'.
3907       ~/.history      Read by login shells after  ~/.tcshrc  if  savehist  is
3908                       set, but see also histfile.
3909       ~/.login        Read  by  login  shells  after ~/.tcshrc or ~/.history.
3910                       The shell may  be  compiled  to  read  ~/.login  before
3911                       instead of after ~/.tcshrc and ~/.history; see the ver‐
3912                       sion shell variable.
3913       ~/.cshdirs (+)  Read by login shells after ~/.login if savedirs is set,
3914                       but see also dirsfile.
3915       /etc/csh.logout Read  by login shells at logout.  ConvexOS, Stellix and
3916                       Intel use /etc/logout and  NeXTs  use  /etc/logout.std.
3917                       A/UX, AMIX, Cray and IRIX have no equivalent in csh(1),
3918                       but read this file in tcsh anyway.   Solaris  2.x  does
3919                       not have it either, but tcsh reads /etc/.logout.  (+)
3920       ~/.logout       Read by login shells at logout after /etc/csh.logout or
3921                       its equivalent.
3922       /bin/sh         Used to interpret shell scripts  not  starting  with  a
3923                       `#'.
3924       /tmp/sh*        Temporary file for `<<'.
3925       /etc/passwd     Source of home directories for `~name' substitutions.
3926
3927       The  order  in which startup files are read may differ if the shell was
3928       so compiled; see Startup and shutdown and the version shell variable.
3929

NEW FEATURES (+)

3931       This manual describes tcsh as a single entity, but  experienced  csh(1)
3932       users will want to pay special attention to tcsh's new features.
3933
3934       A  command-line  editor,  which  supports  GNU Emacs or vi(1)-style key
3935       bindings.  See The command-line editor and Editor commands.
3936
3937       Programmable, interactive word completion and listing.  See  Completion
3938       and listing and the complete and uncomplete builtin commands.
3939
3940       Spelling correction (q.v.) of filenames, commands and variables.
3941
3942       Editor commands (q.v.) which perform other useful functions in the mid‐
3943       dle of typed commands, including documentation lookup (run-help), quick
3944       editor  restarting  (run-fg-editor)  and command resolution (which-com‐
3945       mand).
3946
3947       An enhanced history mechanism.  Events in the history  list  are  time-
3948       stamped.   See  also the history command and its associated shell vari‐
3949       ables, the previously undocumented `#' event specifier  and  new  modi‐
3950       fiers  under  History substitution, the *-history, history-search-*, i-
3951       search-*, vi-search-* and toggle-literal-history  editor  commands  and
3952       the histlit shell variable.
3953
3954       Enhanced  directory  parsing and directory stack handling.  See the cd,
3955       pushd, popd and dirs commands and their associated shell variables, the
3956       description of Directory stack substitution, the dirstack, owd and sym‐
3957       links shell variables and the normalize-command and normalize-path edi‐
3958       tor commands.
3959
3960       Negation in glob-patterns.  See Filename substitution.
3961
3962       New  File  inquiry  operators  (q.v.) and a filetest builtin which uses
3963       them.
3964
3965       A variety of Automatic, periodic  and  timed  events  (q.v.)  including
3966       scheduled  events, special aliases, automatic logout and terminal lock‐
3967       ing, command timing and watching for logins and logouts.
3968
3969       Support for the Native Language System (see Native Language System sup‐
3970       port),  OS  variant features (see OS variant support and the echo_style
3971       shell variable) and system-dependent file locations (see FILES).
3972
3973       Extensive terminal-management capabilities.  See Terminal management.
3974
3975       New builtin commands including builtins, hup, ls-F,  newgrp,  printenv,
3976       which and where (q.v.).
3977
3978       New  variables  that  make  useful  information easily available to the
3979       shell.  See the gid, loginsh, oid, shlvl, tcsh, tty,  uid  and  version
3980       shell  variables  and the HOST, REMOTEHOST, VENDOR, OSTYPE and MACHTYPE
3981       environment variables.
3982
3983       A new syntax for including useful information in the prompt string (see
3984       prompt).   and  special  prompts for loops and spelling correction (see
3985       prompt2 and prompt3).
3986
3987       Read-only variables.  See Variable substitution.
3988

BUGS

3990       When a suspended command is restarted, the shell prints  the  directory
3991       it  started  in  if this is different from the current directory.  This
3992       can be misleading (i.e., wrong) as the job may have changed directories
3993       internally.
3994
3995       Shell   builtin   functions  are  not  stoppable/restartable.   Command
3996       sequences of the form `a ; b ; c' are also not handled gracefully  when
3997       stopping is attempted.  If you suspend `b', the shell will then immedi‐
3998       ately execute `c'.  This is especially  noticeable  if  this  expansion
3999       results  from  an alias.  It suffices to place the sequence of commands
4000       in ()'s to force it to a subshell, i.e., `( a ; b ; c )'.
4001
4002       Control over tty output after processes are started is primitive;  per‐
4003       haps  this  will  inspire  someone  to  work on a good virtual terminal
4004       interface.  In a  virtual  terminal  interface  much  more  interesting
4005       things could be done with output control.
4006
4007       Alias substitution is most often used to clumsily simulate shell proce‐
4008       dures; shell procedures should be provided rather than aliases.
4009
4010       Commands within loops are not placed  in  the  history  list.   Control
4011       structures  should  be  parsed rather than being recognized as built-in
4012       commands.  This would allow control commands to be placed anywhere,  to
4013       be combined with `|', and to be used with `&' and `;' metasyntax.
4014
4015       foreach doesn't ignore here documents when looking for its end.
4016
4017       It should be possible to use the `:' modifiers on the output of command
4018       substitutions.
4019
4020       The screen update for lines longer than the screen width is  very  poor
4021       if the terminal cannot move the cursor up (i.e., terminal type `dumb').
4022
4023       HPATH and NOREBIND don't need to be environment variables.
4024
4025       Glob-patterns  which  do  not use `?', `*' or `[]' or which use `{}' or
4026       `~' are not negated correctly.
4027
4028       The single-command form of if  does  output  redirection  even  if  the
4029       expression is false and the command is not executed.
4030
4031       ls-F includes file identification characters when sorting filenames and
4032       does not handle control characters in filenames  well.   It  cannot  be
4033       interrupted.
4034
4035       Command substitution supports multiple commands and conditions, but not
4036       cycles or backward gotos.
4037
4038       Report bugs at http://bugs.gw.com/, preferably with fixes.  If you want
4039       to  help  maintain  and  test tcsh, send mail to tcsh-request@mx.gw.com
4040       with the text `subscribe tcsh' on a line by itself in the body.
4041

THE T IN TCSH

4043       In 1964, DEC produced the PDP-6.  The PDP-10 was a later re-implementa‐
4044       tion.   It  was  re-christened  the DECsystem-10 in 1970 or so when DEC
4045       brought out the second model, the KI10.
4046
4047       TENEX was created at Bolt, Beranek & Newman (a Cambridge, Massachusetts
4048       think  tank)  in  1972  as an experiment in demand-paged virtual memory
4049       operating systems.  They built a new pager for the DEC PDP-10 and  cre‐
4050       ated the OS to go with it.  It was extremely successful in academia.
4051
4052       In  1975,  DEC  brought  out  a new model of the PDP-10, the KL10; they
4053       intended to have only a version of TENEX, which they had licensed  from
4054       BBN,  for  the new box.  They called their version TOPS-20 (their capi‐
4055       talization is trademarked).  A lot of  TOPS-10  users  (`The  OPerating
4056       System  for PDP-10') objected; thus DEC found themselves supporting two
4057       incompatible systems on the same hardware--but then there were 6 on the
4058       PDP-11!
4059
4060       TENEX,  and  TOPS-20  to  version 3, had command completion via a user-
4061       code-level subroutine library called ULTCMD.  With version 3, DEC moved
4062       all  that  capability  and more into the monitor (`kernel' for you Unix
4063       types), accessed by the COMND% JSYS (`Jump to SYStem' instruction,  the
4064       supervisor call mechanism [are my IBM roots also showing?]).
4065
4066       The creator of tcsh was impressed by this feature and several others of
4067       TENEX and TOPS-20, and created a version of csh which mimicked them.
4068

LIMITATIONS

4070       Words can be no longer than 1024 characters.
4071
4072       The system limits argument lists to 10240 characters.
4073
4074       The number of arguments to a command which involves filename  expansion
4075       is  limited  to  1/6th  the number of characters allowed in an argument
4076       list.
4077
4078       Command substitutions  may  substitute  no  more  characters  than  are
4079       allowed in an argument list.
4080
4081       To  detect  looping,  the shell restricts the number of alias substitu‐
4082       tions on a single line to 20.
4083

SEE ALSO

4085       csh(1), emacs(1), ls(1), newgrp(1), sh(1), setpath(1), stty(1),  su(1),
4086       tset(1),   vi(1),   x(1),  access(2),  execve(2),  fork(2),  killpg(2),
4087       pipe(2), setrlimit(2), sigvec(2), stat(2), umask(2), vfork(2), wait(2),
4088       malloc(3),  setlocale(3),  tty(4),  a.out(5),  termcap(5),  environ(7),
4089       termio(7), Introduction to the C Shell
4090

VERSION

4092       This manual documents tcsh 6.14.00 (Astron) 2005-03-25.
4093

AUTHORS

4095       William Joy
4096         Original author of csh(1)
4097       J.E. Kulp, IIASA, Laxenburg, Austria
4098         Job control and directory stack features
4099       Ken Greer, HP Labs, 1981
4100         File name completion
4101       Mike Ellis, Fairchild, 1983
4102         Command name recognition/completion
4103       Paul Placeway, Ohio State CIS Dept., 1983-1993
4104         Command line editor, prompt routines, new glob  syntax  and  numerous
4105         fixes and speedups
4106       Karl Kleinpaste, CCI 1983-4
4107         Special  aliases,  directory  stack  extraction  stuff,  login/logout
4108         watch, scheduled events, and the idea of the new prompt format
4109       Rayan Zachariassen, University of Toronto, 1984
4110         ls-F and which builtins and numerous  bug  fixes,  modifications  and
4111         speedups
4112       Chris Kingsley, Caltech
4113         Fast storage allocator routines
4114       Chris Grevstad, TRW, 1987
4115         Incorporated 4.3BSD csh into tcsh
4116       Christos S. Zoulas, Cornell U. EE Dept., 1987-94
4117         Ports   to   HPUX,   SVR2  and  SVR3,  a  SysV  version  of  getwd.c,
4118         SHORT_STRINGS support and a new version of sh.glob.c
4119       James J Dempsey, BBN, and Paul Placeway, OSU, 1988
4120         A/UX port
4121       Daniel Long, NNSC, 1988
4122         wordchars
4123       Patrick Wolfe, Kuck and Associates, Inc., 1988
4124         vi mode cleanup
4125       David C Lawrence, Rensselaer Polytechnic Institute, 1989
4126         autolist and ambiguous completion listing
4127       Alec Wolman, DEC, 1989
4128         Newlines in the prompt
4129       Matt Landau, BBN, 1989
4130         ~/.tcshrc
4131       Ray Moody, Purdue Physics, 1989
4132         Magic space bar history expansion
4133       Mordechai ????, Intel, 1989
4134         printprompt() fixes and additions
4135       Kazuhiro Honda, Dept. of Computer Science, Keio University, 1989
4136         Automatic spelling correction and prompt3
4137       Per Hedeland, Ellemtel, Sweden, 1990-
4138         Various bugfixes, improvements and manual updates
4139       Hans J. Albertsson (Sun Sweden)
4140         ampm, settc and telltc
4141       Michael Bloom
4142         Interrupt handling fixes
4143       Michael Fine, Digital Equipment Corp
4144         Extended key support
4145       Eric Schnoebelen, Convex, 1990
4146         Convex support, lots of csh bug fixes, save and restore of  directory
4147         stack
4148       Ron Flax, Apple, 1990
4149         A/UX 2.0 (re)port
4150       Dan Oscarsson, LTH Sweden, 1990
4151         NLS support and simulated NLS support for non NLS sites, fixes
4152       Johan Widen, SICS Sweden, 1990
4153         shlvl, Mach support, correct-line, 8-bit printing
4154       Matt Day, Sanyo Icon, 1990
4155         POSIX termio support, SysV limit fixes
4156       Jaap Vermeulen, Sequent, 1990-91
4157         Vi mode fixes, expand-line, window change fixes, Symmetry port
4158       Martin Boyer, Institut de recherche d'Hydro-Quebec, 1991
4159         autolist  beeping  options, modified the history search to search for
4160         the whole string from the beginning of the line to the cursor.
4161       Scott Krotz, Motorola, 1991
4162         Minix port
4163       David Dawes, Sydney U. Australia, Physics Dept., 1991
4164         SVR4 job control fixes
4165       Jose Sousa, Interactive Systems Corp., 1991
4166         Extended vi fixes and vi delete command
4167       Marc Horowitz, MIT, 1991
4168         ANSIfication fixes, new exec hashing code, imake fixes, where
4169       Bruce Sterling Woodcock, sterling@netcom.com, 1991-1995
4170         ETA and Pyramid port, Makefile and lint fixes, ignoreeof=n  addition,
4171         and various other portability changes and bug fixes
4172       Jeff Fink, 1992
4173         complete-word-fwd and complete-word-back
4174       Harry C. Pulley, 1992
4175         Coherent port
4176       Andy Phillips, Mullard Space Science Lab U.K., 1992
4177         VMS-POSIX port
4178       Beto Appleton, IBM Corp., 1992
4179         Walking  process  group fixes, csh bug fixes, POSIX file tests, POSIX
4180         SIGHUP
4181       Scott Bolte, Cray Computer Corp., 1992
4182         CSOS port
4183       Kaveh R. Ghazi, Rutgers University, 1992
4184         Tek, m88k, Titan and Masscomp ports and fixes.  Added  autoconf  sup‐
4185         port.
4186       Mark Linderman, Cornell University, 1992
4187         OS/2 port
4188       Mika Liljeberg, liljeber@kruuna.Helsinki.FI, 1992
4189         Linux port
4190       Tim P. Starrin, NASA Langley Research Center Operations, 1993
4191         Read-only variables
4192       Dave Schweisguth, Yale University, 1993-4
4193         New man page and tcsh.man2html
4194       Larry Schwimmer, Stanford University, 1993
4195         AFS and HESIOD patches
4196       Luke Mewburn, RMIT University, 1994-6
4197         Enhanced directory printing in prompt, added ellipsis and rprompt.
4198       Edward Hutchins, Silicon Graphics Inc., 1996
4199         Added implicit cd.
4200       Martin Kraemer, 1997
4201         Ported to Siemens Nixdorf EBCDIC machine
4202       Amol Deshpande, Microsoft, 1997
4203         Ported  to  WIN32  (Windows/95 and Windows/NT); wrote all the missing
4204         library and message catalog code to interface to Windows.
4205       Taga Nayuta, 1998
4206         Color ls additions.
4207

THANKS TO

4209       Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig,
4210       Diana  Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky and all
4211       the other people at Ohio State for suggestions and encouragement
4212
4213       All the people on the net, for putting up with, reporting bugs in,  and
4214       suggesting new additions to each and every version
4215
4216       Richard M. Alderson III, for writing the `T in tcsh' section
4217
4218
4219
4220Astron 6.14.00                   25 March 2005                         TCSH(1)
Impressum