1TCSH(1)                     General Commands Manual                    TCSH(1)


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


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


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


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


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


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


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


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


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


4330       The system limits argument lists to ARG_MAX characters.
4332       The  number of arguments to a command which involves filename expansion
4333       is limited to 1/6th the number of characters  allowed  in  an  argument
4334       list.
4336       Command  substitutions  may  substitute  no  more  characters  than are
4337       allowed in an argument list.
4339       To detect looping, the shell restricts the number  of  alias  substitu‐
4340       tions on a single line to 20.


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


4350       This manual documents tcsh 6.22.02 (Astron) 2019-12-04.


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


4467       Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig,
4468       Diana Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky and  all
4469       the other people at Ohio State for suggestions and encouragement
4471       All  the people on the net, for putting up with, reporting bugs in, and
4472       suggesting new additions to each and every version
4474       Richard M. Alderson III, for writing the `T in tcsh' section
4478Astron 6.22.02                    4 Dec 2019                           TCSH(1)