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