tcsh(1) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

tcsh(1)

...   is  an  enhanced  but  completely compatible version of the
Berkeley UNIX C shell, It is a command language  interpreter  us‐
able  both  as an interactive login shell and a shell script com‐
mand processor.  It includes a command-line editor (see  program‐
mable  word  completion  (see  spelling correction (see a history
mechanism (see job control (see and a C-like syntax.  The section
describes major enhancements of over Throughout this manual, fea‐
tures of not found in  most  implementations  (specifically,  the
4.4BSD are labeled with and features which are present in but not
usually  documented are labeled with If the first argument (argu‐
ment 0) to the shell is then it is a login shell.  A login  shell
can  be also specified by invoking the shell with the flag as the
only argument.  The rest of the flag arguments are interpreted as
follows: Forces a from option  processing,  causing  any  further
shell  arguments  to be treated as non-option arguments.  The re‐
maining arguments will not be interpreted as shell options.  This
may be used to pass options to a shell script  without  confusion
or  possible  subterfuge.   The  shell will not run a set-user ID
script without this option.  Commands are read from the following
argument (which must be present, and must be a single  argument),
stored  in  the  shell variable for reference, and executed.  Any
remaining arguments are placed in the shell variable.  The  shell
loads  the directory stack from as described under whether or not
it is a login shell. (+) Sets the environment  variable  to  (Do‐
main/OS  only)  (+) The shell exits if any invoked command termi‐
nates abnormally or yields a non-zero  exit  status.   The  shell
does  not load any resource or startup files, or perform any com‐
mand hashing, and thus starts faster.  The shell uses instead  of
to  spawn processes. (+) The shell is interactive and prompts for
its top-level input, even if it appears to  not  be  a  terminal.
Shells  are  interactive  without this option if their inputs and
outputs are terminals.  The shell is a login  shell.   Applicable
only  if  is the only flag specified.  The shell loads even if it
does not belong to the effective user.   Newer  versions  of  can
pass to the shell. (+) The shell parses commands but does not ex‐
ecute them.  This aids in debugging shell scripts.  The shell ac‐
cepts  SIGQUIT (see and behaves when it is used under a debugger.
Job control is disabled. (u) Command  input  is  taken  from  the
standard  input.   The  shell reads and executes a single line of
input.  A may be used to escape the newline at the  end  of  this
line and continue onto another line.  Sets the shell variable, so
that  command  input  is echoed after history substitution.  Sets
the shell variable, so that commands are echoed  immediately  be‐
fore execution.  Sets the shell variable even before executing Is
to as is to Print a help message on the standard output and exit.
(+)  Print  the version/platform/compilation options on the stan‐
dard output and exit.  This information is also contained in  the
shell  variable. (+) After processing of flag arguments, if argu‐
ments remain but none of the or options were given, the first ar‐
gument is taken as the name of a file of commands, or to be  exe‐
cuted.  The shell opens this file and saves its name for possible
resubstitution  by  Because  many systems use either the standard
version 6 or version 7 shells whose shell scripts are not compat‐
ible with this shell, the shell uses such a shell  to  execute  a
script  whose  first character is not a i.e., that does not start
with a comment.  Remaining arguments  are  placed  in  the  shell
variable.   A  login  shell begins by executing commands from the
system files and It then executes  commands  from  files  in  the
user's directory: first or, if is not found, then the contents of
(or the value of the shell variable) are loaded into memory, then
and  finally (or the value of the shell variable) (+).  The shell
may read before instead of after and before instead of  after  or
and  if so compiled; see the shell variable. (+) Non-login shells
read only and or on startup.   For  examples  of  startup  files,
please consult: Commands like and which need be run only once per
login,  usually go in one's file.  Users who need to use the same
set of files with both and can have only a which checks  for  the
existence  of the shell variable before using -specific commands,
or can have both a and a which s (see the  builtin  command)  The
rest of this manual uses to mean or, if is not found, In the nor‐
mal  case,  the  shell begins reading commands from the terminal,
prompting with (Processing of arguments and the use of the  shell
to process files containing command scripts are described later.)
The  shell  repeatedly  reads  a line of command input, breaks it
into words, places it on the command history list, parses it  and
executes  each command in the line.  One can log out by typing on
an empty line, or or via the shell's  autologout  mechanism  (see
the  shell  variable).  When a login shell terminates it sets the
shell variable to or as appropriate, then executes commands  from
the  files  and  The shell may drop DTR on logout if so compiled;
see the shell variable.  The names of the system login and logout
files vary from system to system for compatibility with different
variants; see We first describe The  and  sections  describe  two
sets of functionality that are implemented as editor commands but
which  deserve their own treatment.  Finally, lists and describes
the editor commands specific to the shell and their default bind‐
ings.  Command-line input can be edited using key sequences  much
like  those  used  in or The editor is active only when the shell
variable is set, which it is by default  in  interactive  shells.
The  builtin  can  display and change key bindings to editor com‐
mands (see -style key bindings are used by  default  (unless  the
shell  was  compiled  otherwise; see the shell variable), but can
change the key bindings to -style bindings en masse.   The  shell
always  binds the arrow keys (as defined in the environment vari‐
able) to editor commands: unless doing  so  would  alter  another
single-character  binding.   One can set the arrow key escape se‐
quences to the empty string with to prevent these bindings.   The
ANSI/VT100  sequences for arrow keys are always bound.  Other key
bindings are, for the most part, what and users would expect  and
can easily be displayed by so there is no need to list them here.
Likewise,  can  list the editor commands with a short description
of each.  Certain key bindings have different behavior  depending
if  or  -style bindings are being used; see for more information.
Note that editor commands do not have the same  notion  of  a  as
does  the shell.  The editor delimits words with any non-alphanu‐
meric characters not in the shell variable while the shell recog‐
nizes only whitespace and some of  the  characters  with  special
meanings  to it, listed under The shell is often able to complete
words when given a unique abbreviation.  For example, typing part
of a word and hit the tab key to run  the  editor  command.   The
shell  completes  the  filename  to replacing the incomplete word
with the complete word in the input buffer.  (Note  the  terminal
completion adds a to the end of completed directories and a space
to  the end of other completed words, to speed typing and provide
a visual indicator of successful completion.  The shell  variable
can  be  unset  to  prevent this.)  If no match is found (perhaps
doesn't exist), the terminal bell rings.  If the word is  already
complete  (perhaps there is a on your system, or perhaps you were
thinking too far ahead and typed the whole thing) a or  space  is
added  to  the  end  if it isn't already there.  Completion works
anywhere in the line, not at just the end; completed text  pushes
the rest of the line to the right.  Completion in the middle of a
word  often  results  in  leftover characters to the right of the
cursor that need to be deleted.  Commands and  variables  can  be
completed  in  much the same way.  For example, typing would com‐
plete to if were the only command on your system  beginning  with
Completion  can  find a command in any directory in or if given a
full pathname.  Typing would complete to if no other variable be‐
gan with The shell parses the input buffer to  determine  whether
the  word you want to complete should be completed as a filename,
command or variable.  The first word in the buffer and the  first
word  following  or is considered to be a command.  A word begin‐
ning with is considered to be a variable.   Anything  else  is  a
filename.  An empty line is as a filename.  You can list the pos‐
sible completions of a word at any time by typing to run the edi‐
tor  command.  The shell lists the possible completions using the
builtin and reprints the prompt and unfinished command line,  for
example:   >   ls   /usr/l[^D]   lbin/        lib/         local/
lost+found/ > ls /usr/l If the shell variable is set,  the  shell
lists the remaining choices (if any) whenever completion fails: >
set  autolist > nm /usr/lib/libt[tab] libtermcap.a@ libtermlib.a@
> nm /usr/lib/libterm If the shell variable is set to choices are
listed only when completion fails and adds no new  characters  to
the word being completed.  A filename to be completed can contain
variables,  your own or others' home directories abbreviated with
(see and directory stack entries abbreviated with (see For  exam‐
ple, > ls ~k[^D] kahn    kas     kellogg > ls ~ke[tab] > ls ~kel‐
logg/  or > set local = /usr/local > ls $lo[tab] > ls $local/[^D]
bin/ etc/ lib/ man/ src/ > ls $local/  Note  that  variables  can
also  be  expanded  explicitly with the editor command.  lists at
only the end of the line; in the middle of a line it deletes  the
character  under  the cursor and on an empty line it logs one out
or, if the variable is set, does nothing.  bound  to  the  editor
command  lists  completion  possibilities anywhere on a line, and
(or any one of the related  editor  commands  that  do  or  don't
delete,  list  and/or  log out, listed under can be bound to with
the builtin command if so desired.  The and editor commands  (not
bound  to  any  keys by default) can be used to cycle up and down
through the list of possible completions, replacing  the  current
word with the next or previous word in the list.  The shell vari‐
able  can  be  set to a list of suffixes to be ignored by comple‐
tion.  Consider the following: > ls Makefile        condiments.h~
main.o           side.c  README            main.c            meal
side.o  condiments.h     main.c~  > set fignore = (.o \~) > emacs
ma[^D] main.c   main.c~  main.o > emacs ma[tab]  >  emacs  main.c
and are ignored by completion (but not listing), because they end
in  suffixes  in Note that a was needed in front of to prevent it
from being expanded to as described under is ignored if only  one
completion  is possible.  If the shell variable is set to comple‐
tion 1) ignores case and 2) considers periods, hyphens and under‐
scores and to be word separators and hyphens and  underscores  to
be  equivalent.   If  you  had  the  following  files comp.lang.c
comp.lang.perl    comp.std.c++  comp.lang.c++     comp.std.c  and
typed  it  would be completed to and typing would list and Typing
would list and Typing in  the  following  directory  A_silly_file
a-hyphenated-file     another_silly_file  would  list  all  three
files, because case is ignored and hyphens  and  underscores  are
equivalent.   Periods,  however, are not equivalent to hyphens or
underscores.  If the shell variable is set to completion  ignores
case and differences between a hyphen and an underscore word sep‐
arator  only  when  the user types a lowercase character or a hy‐
phen.  Entering an uppercase character or an underscore will  not
match  the corresponding lowercase character or hyphen word sepa‐
rator.  Typing in the directory of  the  previous  example  would
still  list all three files, but typing would match only and typ‐
ing would match just and because the user explicitly used an  up‐
percase  or  an underscore character.  Completion and listing are
affected by several other shell variables: can be set to complete
on the shortest possible unique match, even if more typing  might
result  in a longer match: > ls fodder   foo      food     foonly
> set recexact > rm fo[tab] just beeps, because could  expand  to
or  but  if we type another > rm foo[tab] > rm foo the completion
completes on even though and also match.  can be set to  run  the
editor  command  before  each  completion  attempt, can be set to
spelling-correct the word to be completed (see before  each  com‐
pletion attempt and can be set to complete commands automatically
after one hits return.  can be set to make completion beep or not
beep  in a variety of situations, and can be set to never beep at
all.  can be set to a list of directories  and/or  patterns  that
match  directories  to  prevent the completion mechanism from ing
those directories.  and can be set to limit the number  of  items
and  rows  (respectively)  that  are listed without asking first.
can be set to make the shell list only executables  when  listing
commands, but it is quite slow.  Finally, the builtin command can
be  used to tell the shell how to complete words other than file‐
names, commands and variables.  Completion  and  listing  do  not
work  on  glob-patterns  (see but the and editor commands perform
equivalent functions for glob-patterns.  The shell can  sometimes
correct the spelling of filenames, commands and variable names as
well  as  completing  and  listing them.  Individual words can be
spelling-corrected with the editor command (usually bound to  and
and  the  entire  input  buffer  with (usually bound to The shell
variable can be set to to correct the command name or to  correct
the entire line each time return is typed, and can be set to cor‐
rect  the  word  to  be completed before each completion attempt.
When spelling correction is invoked in any of these ways and  the
shell  thinks that any part of the command line is misspelled, it
prompts with the corrected  line:  >  set  correct  =  cmd  >  lz
/usr/bin  CORRECT>ls /usr/bin (y|n|e|a)?  One can answer or space
to execute the corrected line, to leave the  uncorrected  command
in the input buffer, to abort the command as if had been hit, and
anything  else  to execute the original line unchanged.  Spelling
correction recognizes user-defined completions (see  the  builtin
command).   If an input word in a position for which a completion
is defined resembles a word in the completion list, spelling cor‐
rection registers a misspelling and suggests the latter word as a
correction.  However, if the input word does not match any of the
possible completions for that position, spelling correction  does
not register a misspelling.  Like completion, spelling correction
works  anywhere  in the line, pushing the rest of the line to the
right and possibly leaving extra characters to the right  of  the
cursor.   lists key bindings and lists and briefly describes edi‐
tor commands.  Only new or especially interesting editor commands
are described here.  See and for descriptions  of  each  editor's
key  bindings.  The character or characters to which each command
is bound by default is given in  parentheses.   means  a  control
character and a meta character, typed as (or on terminals without
a  meta key.  Case counts, but commands that are bound to letters
by default are bound to both lower-  and  uppercase  letters  for
convenience.   Supported editor commands are: Move back a charac‐
ter.  Cursor behavior modified by Cut from beginning  of  current
word  to  cursor  -  saved in cut buffer.  Word boundary behavior
modified by Move to beginning of current word.  Word boundary and
cursor behavior modified by Move to beginning  of  line.   Cursor
behavior modified by Capitalize the characters from cursor to end
of  current word.  Word boundary behavior modified by Completes a
word as described under Like but steps up from  the  end  of  the
list.   Replaces the current word with the first word in the list
of possible completions.  May be repeated to  step  down  through
the  list.   At the end of the list, beeps and reverts to the in‐
complete  word.   Like  but  ignores  user-defined   completions.
Copies  the  previous  word  in  the  current line into the input
buffer.  See also Word boundary behavior modified by Expands  the
current  word to the most recent preceding one for which the cur‐
rent is a leading substring, wrapping  around  the  history  list
(once)  if  necessary.   Repeating without any intervening typing
changes to  the  next  previous  word  etc.,  skipping  identical
matches  much like does.  Deletes the character under the cursor.
See also Cursor behavior modified by Does if there is a character
under the cursor or on an empty line.  See also  Cursor  behavior
modified  by  Does if there is a character under the cursor or at
the end of the line.  See also Does if there is a character under
the cursor, at the end of the line or on an empty line.  See also
those three commands, each of which does only  a  single  action,
and and each of which does a different two out of the three.  Cut
from  cursor  to  end of current word - save in cut buffer.  Word
boundary behavior modified by Like but steps  down,  stopping  at
the original input line.  Lowercase the characters from cursor to
end  of current word.  Word boundary behavior modified by Signals
an end of file, causing the shell to exit unless the shell  vari‐
able  is  set  to  prevent  this.  See also Move cursor to end of
line.  Cursor behavior modified by Expands history  substitutions
in  the  current word.  See See also and the shell variable.  Ex‐
pands the glob-pattern to the left of the cursor.  See  Like  but
expands  history  substitutions in each word in the input buffer.
Expands the variable to the left of the cursor.  See Move forward
one character.  Cursor behavior modified by Move forward  to  end
of  current  word.  Word boundary and cursor behavior modified by
Searches backwards through the history list for a command  begin‐
ning with the current contents of the input buffer up to the cur‐
sor  and  copies it into the input buffer.  The search string may
be a glob-pattern (see containing or and will  proceed  from  the
appropriate  point  in  the  history list.  Emacs mode only.  See
also and Like  but  searches  forward.   Searches  backward  like
copies  the first match into the input buffer with the cursor po‐
sitioned at the end of the pattern,  and  prompts  with  and  the
first  match.   Additional  characters may be typed to extend the
search, may be typed to continue searching with the same pattern,
wrapping around the history list if necessary, must be bound to a
single character for this to work) or one of the  following  spe‐
cial  characters may be typed: Appends the rest of the word under
the cursor to the search pattern.  Undoes the effect of the  last
character  typed  and deletes a character from the search pattern
if appropriate.  If the previous search  was  successful,  aborts
the  entire  search.   If  not,  goes back to the last successful
search.  Ends the search, leaving the current line in  the  input
buffer.   Any other character not bound to terminates the search,
leaving the current line in the input buffer, and is then  inter‐
preted  as normal input.  In particular, a carriage return causes
the current line to be executed.  See also and Word boundary  be‐
havior  modified by Like but searches forward.  Word boundary be‐
havior modified by Inserts the last word of  the  previous  input
line into the input buffer.  See also Lists completion possibili‐
ties  as  described  under See also and Like but ignores user-de‐
fined completions.  Lists (via the builtin) matches to the  glob-
pattern  (see  to  the  left  of the cursor.  Does or on an empty
line.  See also Expands  history  substitutions  in  the  current
line,  like  and inserts a space.  is designed to be bound to the
space bar, but is not bound by default.  Searches for the current
word in and, if it is found, replaces it with the  full  path  to
the  executable.  Special characters are quoted.  Aliases are ex‐
panded and quoted but commands within aliases are not.  This com‐
mand is useful with commands that  take  commands  as  arguments,
e.g., and Expands the current word as described under the setting
of  the  shell  variable.   Toggles  between  input and overwrite
modes.  Saves the current input line and looks for a stopped  job
where  the  file  name  portion of its first word is found in the
shell variable.  If is not set, then the file name portion of the
environment variable if unset) and the  environment  variable  if
unset)  will be used.  If such a job is found, it is restarted as
if had been typed.  This is used to toggle back and forth between
an editor and the shell easily.  Some people bind this command to
so they can do this even more easily.  Searches for documentation
on the current command, using the same notion of as  the  comple‐
tion routines, and prints it.  There is no way to use a pager; is
designed  for short help files.  If the special alias is defined,
it is run with the command name as a sole argument.  Else,  docu‐
mentation  should be in a file named or which should be in one of
the directories listed in the environment variable.  If there  is
more  than  one  help  file only the first is printed.  In insert
mode (the default), inserts the typed character  into  the  input
line  after  the  character under the cursor.  In overwrite mode,
replaces the character under the cursor with the typed character.
The input mode is normally preserved between lines, but the shell
variable can be set to or to put the editor in that mode  at  the
beginning  of  each  line.  See also Indicates that the following
characters are part of a multi-key sequence.  Binding  a  command
to  a  multi-key  sequence really creates two bindings: the first
character to and the whole sequence  to  the  command.   All  se‐
quences beginning with a character bound to are effectively bound
to  unless  bound  to  another  command.  Attempts to correct the
spelling of each word in the input buffer, like but ignores words
whose first character is one of or or which contain or  to  avoid
problems with switches, substitutions and the like.  See Attempts
to  correct  the  spelling of the current word as described under
Checks each component of a word which appears to be  a  pathname.
Expands  or  unexpands history substitutions in the input buffer.
See also and the shell variable.  Beeps.  Copies the previous en‐
try in the history list into the input buffer.  If is  set,  uses
the  literal  form  of  the  entry.   May  be repeated to step up
through the history list, stopping at  the  top.   Uppercase  the
characters from cursor to end of current word.  Word boundary be‐
havior  modified  by  Vi  goto  the beginning of next word.  Word
boundary and cursor behavior modified by Vi move to  the  end  of
the  current  word.   Word  boundary behavior modified by Prompts
with for a search string (which may be a  glob-pattern,  as  with
searches  for  it  and copies it into the input buffer.  The bell
rings if no match is found.  Hitting return ends the  search  and
leaves  the  last match in the input buffer.  Hitting escape ends
the search and executes the match.  mode only.  Like but searches
forward.  Does a (see the description of the builtin command)  on
the  first  word  of the input buffer.  When executed immediately
after a or another replaces the yanked string with the next  pre‐
vious  string from the killring.  This also has the effect of ro‐
tating the killring, such that this string will be considered the
most recently killed by a later command.   Repeating  will  cycle
through the killring any number of times.  The shell splits input
lines  into words at blanks and tabs.  The special characters and
and the doubled characters and are always separate words, whether
or not they are surrounded by whitespace.  When the shell's input
is not a terminal, the character is taken  to  begin  a  comment.
Each  and  the rest of the input line on which it appears is dis‐
carded before further parsing.  A special character (including  a
blank  or  tab) may be prevented from having its special meaning,
and possibly made part of another word, by preceding  it  with  a
backslash  or  enclosing  it in single double or backward quotes.
When not otherwise quoted a newline preceded by a  is  equivalent
to a blank, but inside quotes this sequence results in a newline.
Furthermore, all except can be prevented by enclosing the strings
(or  parts of strings) in which they appear with single quotes or
by quoting the crucial character(s)  (e.g.,  or  for  or  respec‐
tively) with is no exception: quoting in any way any character of
a word for which an has been defined prevents substitution of the
alias.  The usual way of quoting an alias is to precede it with a
backslash.)   is  prevented  by  backslashes  but  not  by single
quotes.  Strings quoted with double or  backward  quotes  undergo
and but other substitutions are prevented.  Text inside single or
double  quotes becomes a single word (or part of one).  Metachar‐
acters in these strings, including blanks and tabs, do  not  form
separate  words.   Only  in  one  special case (see can a double-
quoted string yield parts of more than  one  word;  single-quoted
strings never do.  Backward quotes are special: they signal which
may  result  in more than one word.  C-style escape sequences can
be used in single quoted strings by preceding the  leading  quote
with  (+) See for a complete list of recognized escape sequences.
Quoting complex strings, particularly  strings  which  themselves
contain  quoting  characters,  can  be  confusing.  Remember that
quotes need not be used as they are in human writing!  It may  be
easier to quote not an entire string, but only those parts of the
string which need quoting, using different types of quoting to do
so  if  appropriate.  The shell variable can be set to make back‐
slashes always quote and (+).   This  may  make  complex  quoting
tasks  easier,  but  it  can cause syntax errors in scripts.  The
following escape sequences are always recognized inside a  string
constructed  using  and optionally by the builtin command as con‐
trolled by the shell variable.  Supported escape  sequences  are:
Bell.   Backspace.   The  control character denoted by in If is a
backslash, it must be doubled.   Escape.   Form  feed.   Newline.
Carriage  return.   Horizontal tab.  Vertical tab.  Literal back‐
slash.  Literal single quote.  Literal double quote.  The charac‐
ter corresponding to the octal number The character corresponding
to the hexadecimal number (1-2 hexadecimal digits).  The  charac‐
ter corresponding to the hexadecimal number (1-8 hexadecimal dig‐
its).  The Unicode code point (1-4 hexadecimal digits).  The Uni‐
code code point (1-8 hexadecimal digits).  The implementations of
and  in  other shells may take a varying number of digits.  It is
often safest to use leading zeros to provide the maximum expected
number of digits.  We now describe  the  various  transformations
the shell performs on the input in the order in which they occur.
We  note in passing the data structures involved and the commands
and variables which affect them.  Remember that substitutions can
be prevented by quoting as described under Each command, or input
from the terminal is saved in the  history  list.   The  previous
command  is  always saved, and the shell variable can be set to a
number to save that many commands.  The shell variable can be set
to not save duplicate events  or  consecutive  duplicate  events.
Saved  commands are numbered sequentially from 1 and stamped with
the time.  It is not usually necessary to use event numbers,  but
the  current event number can be made part of the prompt by plac‐
ing an in the shell variable.  By  default  history  entries  are
displayed  by printing each parsed token separated by space; thus
the redirection operator will be displayed as The shell  actually
saves history in expanded and literal (unexpanded) forms.  If the
shell  variable  is  set, commands that display and store history
use the literal form.  The builtin command can print, store in  a
file, restore and clear the history list at any time, and the and
shell  variables  can  be set to store the history list automati‐
cally on logout and restore it on login.   History  substitutions
introduce words from the history list into the input stream, mak‐
ing  it  easy  to repeat commands, repeat arguments of a previous
command in the current command, or fix spelling mistakes  in  the
previous  command  with little typing and a high degree of confi‐
dence.  History substitutions begin with the character  They  may
begin  anywhere  in  the input stream, but they do not nest.  The
may be preceded by a to prevent its special meaning;  for  conve‐
nience,  a  is  passed  unchanged when it is followed by a blank,
tab, newline, or History substitutions also occur when  an  input
line  begins  with see The characters used to signal history sub‐
stitution and can be changed by setting the shell variable.   Any
input  line  which contains a history substitution is printed be‐
fore it is executed.  A history substitution  may  have  an  (see
which  indicates  the  event  from which words are to be taken, a
(see which selects particular words from the chosen event, and/or
a (see which manipulates the selected  words.   A  history  event
specification  may be one of (with the history substitution char‐
acter shown): A number, referring to a particular event.  An off‐
set, referring to the event before the current event.   The  cur‐
rent  event.   This should be used carefully in where there is no
check for recursion.  allows 10 levels of recursion. (+) The pre‐
vious event, equivalent to The most recent event whose first word
begins with the string The most recent event which  contains  the
string The second can be omitted if it is immediately followed by
a  newline.   For example, consider this bit of someone's history
list:
 9  8:30    nroff -man wumpus.man 10  8:31    cp wumpus.man  wum‐
pus.man.old  11   8:36     vi  wumpus.man  12   8:37    diff wum‐
pus.man.old wumpus.man The commands are shown  with  their  event
numbers  and  time  stamps.   The current event, which we haven't
typed in yet, is event 13.  Typing or refers to event 11.  Typing
refers to the previous event, 12.  can be abbreviated  if  it  is
followed  by  which is described in and Typing refers to event 9,
which begins with Typing refers to event 12, which contains With‐
out word designators or modifiers history references  simply  ex‐
pand  to  the  entire event, so we might type to redo the command
(event 10) or if the output in the previous event,  12,  scrolled
off  the  top of the screen.  History references may be insulated
from the surrounding text with braces and if necessary.  For  ex‐
ample, would look for a command beginning with and, in this exam‐
ple,  not find one, but would expand unambiguously to by matching
event 11.  Even in braces, history  substitutions  do  not  nest.
(+)  While  expands,  for example, to event 3 with the letter ap‐
pended to it, expands it to the last event  beginning  with  only
completely  numeric arguments are treated as event numbers.  This
makes it possible to recall events beginning  with  numbers.   To
expand as in type To select words from an event we can follow the
event  specification by a and a designator for the desired words.
The words of an input line are numbered from 0, the  first  (usu‐
ally  command) word being 0, the second word (first argument) be‐
ing 1, etc.  The basic word designators are, with columns  for  a
leading and a leading (for the abbreviated word designators - see
The  first (command) word.  The th argument.  The first argument,
equivalent to The last argument.  The word matched by an  search.
A  range of words.  Equivalent to Equivalent to but returns noth‐
ing if the event contains only 1 word.  Equivalent to  Equivalent
to  but  omitting the last word Equivalent to the command and all
arguments except the last argument.  Selected words are  inserted
into  the  command line separated by single blanks.  For example,
the command (event 12) in the history list example in might  have
been typed as (using to select the first argument from the previ‐
ous  event)  or to select and swap the arguments from the command
(event 10).  If we didn't care about the order of  the  we  might
have typed or simply The command (event 10) might have been typed
using  to  refer  to  the  current event.  Typing would reuse the
first two words from the command (event 9) to expand to The sepa‐
rating the event specification from the word  designator  can  be
omitted  if  the  argument selector begins with a or For example,
our command (event 12) might have been  typed  or,  equivalently,
However,  if  is  abbreviated an argument selector beginning with
will be interpreted as an event specification.  A history  refer‐
ence  may  have a word designator but no event specification.  It
then references the previous command.  Continuing our command ex‐
ample (event 12), we could have typed simply or, to get the argu‐
ments in the opposite order, just The word or words in a  history
reference can be edited, or by following it with one or more mod‐
ifiers  (with  the  leading  shown),  each preceded by a Remove a
trailing pathname component, leaving the head.  Remove all  lead‐
ing pathname components, leaving the tail.  Remove a filename ex‐
tension  leaving  the  root  name.  Remove all but the extension.
Uppercase the first lowercase letter.  Lowercase the first upper‐
case letter.  Substitute for is simply a string like not a  regu‐
lar expression as in the eponymous command.  Any character may be
used  as the delimiter in place of a can be used to quote the de‐
limiter inside and The character  in  the  is  replaced  by  also
quotes If is empty the from a previous substitution or the from a
previous  search  or event number in event specification is used.
The trailing delimiter may be omitted if it is  immediately  fol‐
lowed by a newline.  Repeat the previous substitution.  Apply the
following  modifier once to each word.  Apply the following modi‐
fier as many times as possible to a single word.  and can be used
together to apply a modifier globally.  With the  modifier,  only
the  patterns contained in the original word are substituted, not
patterns that contain any substitution  result.   Print  the  new
command line but do not execute it.  Quote the substituted words,
preventing  further  substitutions.  Same as but in addition pre‐
serve empty variables as a string containing a NUL.  This is use‐
ful  to  preserve  positional  arguments  for  example:   >   set
args=('arg 1' '' 'arg 3') > tcsh -f -c 'echo ${#argv}' $args:gQ 3
Like  but  break  into words at blanks, tabs and newlines.  Modi‐
fiers are applied to only the first modifiable  word  (unless  is
used).   It  is an error for no word to be modifiable.  For exam‐
ple, the command (event 12) in the history list example in  might
have been typed as using to remove from the first argument on the
same  line  We  could  type  then to capitalize to upper case the
first word to or to upper case all words.  We might  follow  with
to  correct  the  spelling of (see and for different approaches).
(+) In as such, only one modifier may be applied to each  history
or variable expansion.  In more than one may be used, for example
%  mv  wumpus.man  /usr/share/man/man1/wumpus.1  % man !$:t:r man
wumpus In the result would be A substitution followed  by  a  may
need   to   be   insulated  from  it  with  braces:  >  mv  a.out
/usr/games/wumpus > setenv PATH !$:h:$PATH Bad ! modifier: $.   >
setenv PATH !{-2$:h}:$PATH setenv PATH /usr/games:/bin:/usr/bin:.
The  first  attempt would succeed in but fails in because expects
another modifier after the second rather than There is a  special
abbreviation for substitutions; when it is the first character on
an input line, is equivalent to Thus, we might follow the example
from with to make the spelling correction.  This is the only his‐
tory  substitution  which does not explicitly begin with Finally,
history can be accessed through the editor as well as through the
substitutions just described.  The and and  and  and  and  editor
commands search for events in the history list and copy them into
the  input  buffer.   The editor command switches between the ex‐
panded and literal forms of history lines in  the  input  buffer.
and  expand  history substitutions in the current word and in the
entire input buffer respectively.  The shell maintains a list  of
aliases  which can be set, unset and printed by the and commands.
After a command line is parsed  into  simple  commands  (see  the
first  word  of each command, left-to-right, is checked to see if
it has an alias.  If so, the first word is replaced by the alias.
If the alias contains a history reference, it undergoes as though
the original command were the previous input line.  If the  alias
does  not  contain a history reference, the argument list is left
untouched.  Thus if the alias for were the command  would  become
the  argument list here being undisturbed.  If the alias for were
then would become Aliases can be used to introduce  parser  meta‐
syntax.   For  example, defines a which its arguments to the line
printer.  Alias substitution is repeated until the first word  of
the  command  has  no  alias.   If an alias substitution does not
change the first word (as in the previous example) it is  flagged
to  prevent a loop.  Other loops are detected and cause an error.
Some aliases are referred to by the shell; see  The  shell  main‐
tains  a  list of variables, each of which has as value a list of
zero or more words.  The values of shell variables  can  be  dis‐
played  and  changed with the and commands.  The system maintains
its own list of variables.  These can be  displayed  and  changed
with and (+) Variables may be made read-only with Read-only vari‐
ables  may  not  be  modified  or unset; attempting to do so will
cause an error.  Once made read-only, a variable cannot  be  made
writable,  so should be used with caution.  Environment variables
cannot be made read-only.  Some variables are set by the shell or
referred to by it.  For instance, the variable is an image of the
shell's argument list, and words of this variable's value are re‐
ferred to in special ways.  Some of the variables referred to  by
the  shell  are toggles; the shell does not care what their value
is, only whether they are set or not.  For instance, the variable
is a toggle which causes command input to be echoed.  The command
line option sets this variable.  lists all  variables  which  are
referred  to  by the shell.  Other operations treat variables nu‐
merically.  The command permits numeric calculations to  be  per‐
formed  and  the  result assigned to a variable.  Variable values
are, however, always represented as (zero or more) strings.   For
the purposes of numeric operations, the null string is considered
to  be  zero,  and  the second and subsequent words of multi-word
values are ignored.  After the input line is aliased and  parsed,
and  before  each  command  is executed, variable substitution is
performed keyed by characters.  This expansion can  be  prevented
by  preceding the with a except within pairs where it occurs, and
within pairs where it occurs.  Strings quoted by are  interpreted
later  (see  so substitution does not occur there until later, if
at all.  A is passed unchanged if followed by a  blank,  tab,  or
end-of-line.   Input/output  redirections  are  recognized before
variable expansion, and are variable expanded separately.  Other‐
wise, the command name and entire argument list are expanded  to‐
gether.   It  is  thus  possible for the first (command) word (to
this point) to generate more than one word, the  first  of  which
becomes the command name, and the rest of which become arguments.
Unless  enclosed in or given the modifier the results of variable
substitution may eventually be command and filename  substituted.
Within  a variable whose value consists of multiple words expands
to a (portion of a) single word, with the words of the variable's
value separated by blanks.  When the modifier  is  applied  to  a
substitution the variable will expand to multiple words with each
word  separated by a blank and quoted to prevent later command or
filename substitution.  The editor command normally bound to  can
be  used  to interactively expand individual variables.  The fol‐
lowing metasequences are provided for introducing variable values
into the shell input: Substitutes the words of the value of vari‐
able each separated by a blank.  Braces insulate  from  following
characters  which would otherwise be part of it.  Shell variables
have names consisting of letters and digits starting with a  let‐
ter.  The underscore character is considered a letter.  If is not
a  shell variable, but is set in the environment, then that value
is returned (but some of the other  forms  given  below  are  not
available  in  this  case).   Substitutes only the selected words
from the value of The is subjected to substitution and  may  con‐
sist  of  a single number or two numbers separated by a The first
word of a variable's value is numbered If the first number  of  a
range  is omitted it defaults to If the last member of a range is
omitted it defaults to The selects all words.  It is not an error
for a range to be empty if the second argument is omitted  or  in
range.  Substitutes the name of the file from which command input
is being read.  An error occurs if the name is not known.  Equiv‐
alent to Equivalent to which is equivalent to Except as noted, it
is  an error to reference a variable which is not set.  The modi‐
fiers described under except for can be applied to the  substitu‐
tions  above.   More  than  one  may  be used.  (+) Braces may be
needed to insulate a variable substitution from a literal just as
with any modifiers must appear within the braces.  The  following
substitutions  cannot be modified with modifiers: Substitutes the
string if is set, if it is not.  Substitutes if the current input
filename is known, if it is not.  Always in  interactive  shells.
Substitutes  the number of words in Equivalent to (+) Substitutes
the number of characters in (+) Substitutes the number of charac‐
ters in (+) Equivalent to (+) Substitutes the  (decimal)  process
number  of the (parent) shell.  Substitutes the (decimal) process
number of the last background process started by this shell.  (+)
Substitutes the command line of the last command  executed.   (+)
Substitutes  a  line from the standard input, with no further in‐
terpretation thereafter.  It can be used to read  from  the  key‐
board  in  a shell script.  (+) While always quotes as if it were
equivalent to does not.  Furthermore, when is waiting for a  line
to  be  typed the user may type an interrupt to interrupt the se‐
quence into which the line is to be substituted, but does not al‐
low this.  Substitutes the number of  available  bytes  from  the
standard  input.   (This feature might be non-portable.)  (+) The
remaining substitutions are applied selectively to the  arguments
of  builtin  commands.   This  means that portions of expressions
which are not evaluated are not subjected  to  these  expansions.
For  commands  which  are  not internal to the shell, the command
name is substituted separately from the argument list.  This  oc‐
curs  very late, after input-output redirection is performed, and
in a child of the main shell.  Command substitution is  indicated
by a command enclosed in The output from such a command is broken
into  separate words at blanks, tabs and newlines, and null words
are discarded.  The output is variable  and  command  substituted
and  put  in place of the original string.  Command substitutions
inside double quotes retain blanks and tabs; only newlines  force
new words.  The single final newline does not force a new word in
any  case.   It  is  thus  possible for a command substitution to
yield only part of a word, even if the command outputs a complete
line.  By default, the shell since version 6.12 replaces all new‐
line and carriage return characters in the command by spaces.  If
this is switched off by unsetting newlines separate  commands  as
usual.   If  a  word  contains any of the characters or or begins
with the character it is a candidate for  filename  substitution,
also  known  as  This  word is then regarded as a pattern and re‐
placed with an alphabetically sorted list  of  file  names  which
match  the  pattern.  In matching filenames, the character at the
beginning of a filename or immediately following a as well as the
character must be matched explicitly (unless either  or  or  both
are  set  (+)).   The character matches any string of characters,
including the null string.   The  character  matches  any  single
character.   The  sequence  matches any one of the characters en‐
closed.  Within a pair of characters  separated  by  matches  any
character  lexically between the two.  (+) Some glob-patterns can
be negated: The sequence matches any single  character  specified
by  the characters and/or ranges of characters in the braces.  An
entire glob-pattern can also be negated with > echo * bang  crash
crunch  ouch > echo ^cr* bang ouch Glob-patterns which do not use
or or which use or (below) are not negated correctly.  The metan‐
otation is a shorthand for Left-to-right order is preserved:  ex‐
pands  to  The  results of matches are sorted separately at a low
level to preserve this order: might expand to (Note that was  not
sorted  with the results of matching It is not an error when this
construct expands to files which do not exist, but it is possible
to get an error from a command to  which  the  expanded  list  is
passed.   This  construct  may  be nested.  As a special case the
words and are passed undisturbed.  The character at the beginning
of a filename refers to home directories.  Standing alone,  i.e.,
it  expands  to  the invoker's home directory as reflected in the
value of the shell variable.  When followed by a name  consisting
of  letters,  digits and characters the shell searches for a user
with that name and substitutes their home directory;  thus  might
expand  to  and might expand to If the character is followed by a
character other than a letter or or appears elsewhere than at the
beginning of a word, it is left undisturbed.  A command like does
not, therefore, do home directory substitution as one might hope.
It is an error for a glob-pattern containing or with  or  without
not  to  match any files.  However, only one pattern in a list of
glob-patterns must match a file (so that, e.g., would  fail  only
if  there were no files in the current directory ending in or and
if the shell variable is set a  pattern  (or  list  of  patterns)
which  matches  nothing  is left unchanged rather than causing an
error.  The shell variable can be set to allow or as a file  glob
pattern  that  matches  any string of characters including recur‐
sively traversing any  existing  sub-directories.   For  example,
will  list  all  the  .c files in the current directory tree.  If
used by itself, it will match zero or more sub-directories.   For
example  will  list  any  file  named in the directory tree; will
match any file in the directory tree ending in and will match any
.h file with either in a subdirectory name or in the filename it‐
self.  To prevent problems with recursion, the glob-pattern  will
not  descend  into  a  symbolic  link containing a directory.  To
override this, use (+) The shell variable can be set  to  prevent
filename  substitution, and the editor command, normally bound to
can be used to interactively expand individual filename substitu‐
tions.  The directory stack is a list  of  directories,  numbered
from zero, used by the and builtin commands.  can print, store in
a  file,  restore  and clear the directory stack at any time, and
the and shell variables can be set to store the  directory  stack
automatically on logout and restore it on login.  The shell vari‐
able  can  be  examined to see the directory stack and set to put
arbitrary directories into the directory  stack.   The  character
followed  by one or more digits expands to an entry in the direc‐
tory stack.  The special case expands to the  last  directory  in
the   stack.    For   example,  >  dirs  -v  0        /usr/bin  1
/usr/spool/uucp 2       /usr/accts/sys > echo =1  /usr/spool/uucp
> echo =0/calendar /usr/bin/calendar > echo =- /usr/accts/sys The
and  shell  variables  and  the editor command apply to directory
stack as well as filename substitutions.  There are several  more
transformations  involving filenames, not strictly related to the
above but mentioned here for completeness.  filename may  be  ex‐
panded  to  a  full path when the variable is set to Quoting pre‐
vents this expansion, and the editor command does it  on  demand.
The editor command expands commands in into full paths on demand.
Finally,  and  interpret as the old working directory (equivalent
to the shell variable This is not a substitution at all,  but  an
abbreviation  recognized by only those commands.  Nonetheless, it
too can be prevented by quoting.  The  next  three  sections  de‐
scribe how the shell executes commands and deals with their input
and  output.   A simple command is a sequence of words, the first
of which specifies the command to be executed.  A series of  sim‐
ple  commands  joined by characters forms a pipeline.  The output
of each command in a pipeline is connected to the  input  of  the
next.  Simple commands and pipelines may be joined into sequences
with  and  will be executed sequentially.  Commands and pipelines
can also be joined into sequences with or indicating, as in the C
language, that the second is to be executed  only  if  the  first
fails  or  succeeds  respectively.  A simple command, pipeline or
sequence may be placed in parentheses and to form a  simple  com‐
mand, which may in turn be a component of a pipeline or sequence.
A  command,  pipeline or sequence can be executed without waiting
for it to terminate by following it with an Builtin commands  are
executed within the shell.  If any component of a pipeline except
the last is a builtin command, the pipeline is executed in a sub‐
shell.  Parenthesized commands are always executed in a subshell.
(cd;  pwd);  pwd thus prints the directory, leaving you where you
were (printing this after the  home  directory),  while  cd;  pwd
leaves you in the directory.  Parenthesized commands are most of‐
ten  used  to  prevent  from affecting the current shell.  When a
command to be executed is found not to be a builtin  command  the
shell  attempts to execute the command via Each word in the vari‐
able names a directory in which the shell will look for the  com‐
mand.   If  the shell is not given a option, the shell hashes the
names in these directories into an internal table so that it will
try an in only a directory where there is a possibility that  the
command resides there.  This greatly speeds command location when
a  large  number  of  directories are present in the search path.
This hashing mechanism is not used: If hashing is turned  explic‐
itly  off  via If the shell was given a For each directory compo‐
nent of which does not begin with a If the command contains a  In
the above four cases the shell concatenates each component of the
path  vector with the given command name to form a path name of a
file which it then attempts to execute it.  If execution is  suc‐
cessful,  the  search stops.  If the file has execute permissions
but is not an executable to the system (i.e., it  is  neither  an
executable  binary  nor a script that specifies its interpreter),
then it is assumed to be a file containing shell commands  and  a
new shell is spawned to read it.  The special alias may be set to
specify  an  interpreter other than the shell itself.  On systems
which do not understand the  script  interpreter  convention  the
shell  may be compiled to emulate it; see the shell variable.  If
so, the shell checks the first line of the file to see if  it  is
of the form If it is, the shell starts with the given s and feeds
the  file  to it on standard input.  The standard input and stan‐
dard output of a command may be  redirected  with  the  following
syntax:  Open file (which is first variable, command and filename
expanded) as the standard input.  Read the shell input  up  to  a
line which is identical to is not subjected to variable, filename
or  command  substitution, and each input line is compared to be‐
fore any substitutions are done on this  input  line.   Unless  a
quoting  or  appears in variable and command substitution is per‐
formed on the intervening lines, allowing to quote  and  Commands
which  are  substituted  have all blanks, tabs, and newlines pre‐
served, except for the final newline which is dropped.   The  re‐
sultant  text  is  placed in an anonymous temporary file which is
given to the command as standard input.   The  file  is  used  as
standard  output.  If the file does not exist then it is created;
if the file exists, it is truncated, its previous contents  being
lost.  If the shell variable is set, then the file must not exist
or  be  a character special file (e.g., a terminal or or an error
results.  This helps prevent accidental destruction of files.  In
this case the forms can be used to suppress this  check.   If  is
given in is allowed on empty files; if is given in an interactive
confirmation  is  presented, rather than an error.  The forms in‐
volving route the diagnostic output into the  specified  file  as
well  as the standard output.  is expanded in the same way as in‐
put filenames are.  Like but appends output to the end of If  the
shell variable is set, then it is an error for the file to exist,
unless  one  of the forms is given.  A command receives the envi‐
ronment in which the shell was invoked as modified by the  input-
output  parameters and the presence of the command in a pipeline.
Thus, unlike some previous shells, commands run from  a  file  of
shell  commands have no access to the text of the commands by de‐
fault; rather they receive the original  standard  input  of  the
shell.   The  mechanism  should  be  used to present inline data.
This permits shell command scripts to function as  components  of
pipelines  and  allows  the  shell to block read its input.  Note
that the default standard input for a command run detached is the
empty file but the original standard input of the shell.  If this
is a terminal and if the process attempts to read from the termi‐
nal, then the process will block and the user  will  be  notified
(see  Diagnostic  output  may be directed through a pipe with the
standard output.  Simply use the form rather than just The  shell
cannot  presently  redirect  diagnostic output without also redi‐
recting standard output, but is often an  acceptable  workaround.
Either  or  may  be  to  send output to the terminal.  Having de‐
scribed how the shell accepts, parses and executes command lines,
we now turn to a variety of its useful features.  The shell  con‐
tains a number of commands which can be used to regulate the flow
of  control  in command files (shell scripts) and (in limited but
useful ways) from terminal input.  These commands all operate  by
forcing  the shell to reread or skip in its input and, due to the
implementation, restrict the placement of some of  the  commands.
The and statements, as well as the form of the statement, require
that  the  major keywords appear in a single simple command on an
input line as shown below.  If the shell's input is not seekable,
the shell buffers up input whenever a loop is being read and per‐
forms seeks in this internal buffer to accomplish  the  rereading
implied by the loop.  (To the extent that this allows, backward s
will  succeed  on non-seekable inputs.)  The and builtin commands
use expressions with a common syntax.  The  expressions  can  in‐
clude  any of the operators described in the next three sections.
Note that the builtin command has its own separate syntax.  These
operators are similar to those of C and have the same precedence.
The operators, in descending precedence, with  equivalent  prece‐
dence per line, are: The and operators compare their arguments as
strings;  all  others  operate on numbers.  The operators and are
like and except that the right hand side is a  glob-pattern  (see
against which the left hand operand is matched.  This reduces the
need  for  use  of  the builtin command in shell scripts when all
that is really needed is pattern matching.  Null or missing argu‐
ments are considered The results of all expressions are  strings,
which represent decimal numbers.  It is important to note that no
two  components of an expression can appear in the same word; ex‐
cept when adjacent to components of expressions which are syntac‐
tically significant to the parser they should  be  surrounded  by
spaces.   Commands  can be executed in expressions and their exit
status returned by enclosing them in braces and Remember that the
braces should be separated from  the  words  of  the  command  by
spaces.  Command executions succeed, returning true, i.e., if the
command  exits  with  status  0,  otherwise  they fail, returning
false, i.e., If more detailed status information is required then
the command should be executed outside of an expression  and  the
shell   variable  examined.   Some  of  these  operators  perform
true/false tests on files and related objects.  They are  of  the
form  where  is  one of: Read access.  Write access.  Execute ac‐
cess.  Executable in the path or shell  builtin,  e.g.,  and  are
generally  true,  but  is  not.  (+) Existence.  Ownership.  Zero
size.  Non-zero size. (+) Plain file.  Directory.  Symbolic link.
(+) * Block special file. (+) Character special file.  (+)  Named
pipe  (fifo). (+) * Socket special file. (+) * Set-user-ID bit is
set. (+) Set-group-ID bit is set. (+)  Sticky  bit  is  set.  (+)
(which must be a digit) is an open file descriptor for a terminal
device.  (+)  Has been migrated (Convex only). (+) Applies subse‐
quent operators in a multiple-operator test to  a  symbolic  link
rather  than  to the file to which the link points. (+) * is com‐
mand and filename expanded and then tested to see if it  has  the
specified relationship to the real user.  If does not exist or is
inaccessible  or, for the operators indicated by if the specified
file type does not exist on the  current  system,  then  all  in‐
quiries  return  false, i.e., These operators may be combined for
conciseness: is equivalent to (+) For example, is  true  (returns
for plain executable files, but not for directories.  may be used
in  a  multiple-operator  test to apply subsequent operators to a
symbolic link rather than to the file to which the  link  points.
For  example,  is true for links owned by the invoking user.  and
are always true for links and false for non-links.  has a differ‐
ent meaning when it is the last operator in  a  multiple-operator
test;  see  below.   It is possible but not useful, and sometimes
misleading, to combine operators which expect to be a  file  with
operators which do not (e.g., and Following with a non-file oper‐
ator  can  lead to particularly strange results.  Other operators
return other information, i.e., not just or  (+)  They  have  the
same  format  as before; may be one of: Last file access time, as
the number of seconds since the epoch.   Like  but  in  timestamp
format, e.g., Last file modification time.  Like but in timestamp
format.   Last  inode  modification  time.  Like but in timestamp
format.  Device number.  Inode number.  Composite ile identifier,
in the form The name of the file pointed to by a  symbolic  link.
Number  of  (hard) links.  Permissions, in octal, without leading
zero.  Like with leading zero.  Equivalent to  For  example,  re‐
turns if is writable by group and other, if by group only, and if
by  neither.  Like with leading zero.  Numeric userid.  Username,
or the numeric  userid  if  the  username  is  unknown.   Numeric
groupid.   Groupname,  or the numeric groupid if the groupname is
unknown.  Size, in bytes.  Only one of these operators may appear
in a multiple-operator test, and it must be the last.  Note  that
has  a  different meaning at the end of and elsewhere in a multi‐
ple-operator test.  Because is a valid return value for  many  of
these  operators,  they do not return when they fail: most return
and returns If the shell is compiled with POSIX defined (see  the
shell  variable),  the  result  of a file inquiry is based on the
permission bits of the file and not on the result of  the  system
call.   For  example,  if one tests a file with whose permissions
would ordinarily allow writing but which  is  on  a  file  system
mounted  read-only,  the  test  will succeed in a POSIX shell but
fail in a non-POSIX shell.  File inquiry operators  can  also  be
evaluated  with  the builtin command (+).  The shell associates a
with each pipeline.  It keeps a table of current jobs, printed by
the command, and assigns them small integer numbers.  When a  job
is  started  asynchronously  with  the  shell prints a line which
looks like [1] 1234 indicating that the  job  which  was  started
asynchronously  was job number 1 and had one (top-level) process,
whose process id was 1234.  If you are running a job and wish  to
do  something  else  you  may  hit the suspend key (usually which
sends a STOP signal to the current job.  The shell will then nor‐
mally indicate that the job has been and  print  another  prompt.
If  the  shell  variable is set, all jobs will be listed like the
builtin command; if it is set to the listing will be in long for‐
mat, like You can then manipulate the state of the suspended job.
You can put it in the with the command or run some other commands
and eventually bring the job back into the with (See also the ed‐
itor command.)  A takes effect immediately and is like an  inter‐
rupt  in  that pending output and unread input are discarded when
it is typed.  The builtin command causes the shell  to  wait  for
all background jobs to complete.  The key sends a delayed suspend
signal, which does not generate a STOP signal until a program at‐
tempts  to  it,  to  the current job.  This can usefully be typed
ahead when you have prepared some commands for a  job  which  you
wish to stop after it has read them.  The key performs this func‐
tion  in  in  is  an editing command.  (+) A job being run in the
background stops if it tries to read from  the  terminal.   Back‐
ground  jobs are normally allowed to produce output, but this can
be disabled by giving the command If you  set  this  tty  option,
then  background  jobs  will stop when they try to produce output
like they do when they try to read input.  There are several ways
to refer to jobs in the shell.  The character  introduces  a  job
name.   If  you wish to refer to job number 1, you can name it as
Just naming a job brings it to the foreground; thus is a  synonym
for  bringing  job 1 back into the foreground.  Similarly, typing
resumes job 1 in the background, just like  A  job  can  also  be
named  by  an  unambiguous prefix of the string typed in to start
it: would normally restart a suspended job, if  there  were  only
one  suspended  job  whose  name began with the string It is also
possible to type to specify a job whose text contains if there is
only one such job.  The shell maintains a notion of  the  current
and previous jobs.  In output pertaining to jobs, the current job
is  marked  with  a and the previous job with a The abbreviations
and (by analogy with the syntax of the mechanism)  all  refer  to
the current job, and refers to the previous job.  The job control
mechanism requires that the option be set on some systems.  It is
an  artifact from a implementation of the tty driver which allows
generation of interrupt characters from the keyboard to tell jobs
to stop.  See and the builtin command for details on setting  op‐
tions  in the new tty driver.  The shell learns immediately when‐
ever a process changes state.  It normally informs you whenever a
job becomes blocked so that no further progress is possible,  but
only  right  before  it prints a prompt.  This is done so that it
does not otherwise disturb your work.  If, however, you  set  the
shell  variable  the shell will notify you immediately of changes
of status in background jobs.  There is also  a  builtin  command
which  marks  a single process so that its status changes will be
immediately reported.  By default marks the current process; sim‐
ply enter after starting a background job to mark it for  immedi‐
ate status reporting.  When you try to leave the shell while jobs
are  stopped,  you will be warned that You may use the command to
see what they are.  If you do this or  immediately  try  to  exit
again,  the  shell  will not warn you a second time, and the sus‐
pended jobs will be terminated.  There are various  ways  to  run
commands and take other actions automatically at various times in
the of the shell.  They are summarized here, and described in de‐
tail  under the appropriate and The builtin command puts commands
in a scheduled-event list, to be executed by the shell at a given
time.  The and can be set,  respectively,  to  execute  commands:
when the shell wants to ring the bell, when the working directory
changes, when a job is started or is brought into the foreground,
every  minutes,  before each prompt, and before each command gets
executed.  The shell variable can be set to log out or  lock  the
shell  after  a given number of minutes of inactivity.  The shell
variable can be set to check  for  new  mail  periodically.   The
shell  variable  can  be set to print the exit status of commands
which exit with a status other than zero.  The shell variable can
be set to ask the user, when is typed, if that is really what was
meant.  The shell variable can be set to execute the builtin com‐
mand after the completion of any process that takes more  than  a
given  number of CPU seconds.  The and shell variables can be set
to report when selected users log in or out, and the builtin com‐
mand reports on those users at any time.  The shell is eight  bit
clean  (if so compiled; see the shell variable) and thus supports
character sets needing this capability.  NLS support differs  de‐
pending  on whether or not the shell was compiled to use the sys‐
tem's NLS (again, see In either case, 7-bit ASCII is the  default
character  code (e.g., the classification of which characters are
printable) and sorting, and changing the or environment variables
causes a check for possible changes in these respects.  When  us‐
ing  the system's NLS, the function is called to determine appro‐
priate character code/classification  and  sorting  (e.g.,  would
yield  as  the character code).  This function typically examines
the and environment variables; refer to the system  documentation
for  further details.  When not using the system's NLS, the shell
simulates it by assuming that the ISO  8859-1  character  set  is
used  whenever either of the and variables are set, regardless of
their values.  Sorting is not affected for the simulated NLS.  In
addition, with both real and simulated NLS, all printable charac‐
ters in the range \200-\377, i.e., those that have bindings,  are
automatically  rebound  to  The corresponding binding for the se‐
quence, if any, is left alone.  These characters are not  rebound
if  the  environment variable is set.  This may be useful for the
simulated NLS or a primitive real  NLS  which  assumes  full  ISO
8859-1.   Otherwise,  all bindings in the range \240-\377 are ef‐
fectively undone.  Explicitly rebinding the relevant keys with is
of course still possible.  Unknown characters (i.e.,  those  that
are  neither printable nor control characters) are printed in the
format \nnn.  If the tty is not in 8 bit mode, other 8 bit  char‐
acters are printed by converting them to ASCII and using standout
mode.   The  shell  never changes the 7/8 bit mode of the tty and
tracks user-initiated changes of 7/8 bit mode.   NLS  users  (or,
for  that  matter,  those who want to use a meta key) may need to
explicitly set the tty in 8 bit mode through the appropriate com‐
mand in, e.g., the file.  A number of new  builtin  commands  are
provided  to  support  features  in particular operating systems.
All are described in detail in the section.  On systems that sup‐
port TCF (aix-ibm370, aix-ps2), and get and set the system execu‐
tion path, and get and set the experimental  version  prefix  and
migrates processes between sites.  The builtin prints the site on
which  each job is executing.  Under BS2000, executes commands of
the underlying BS2000/OSD  operating  system.   Under  Domain/OS,
adds  shared  libraries  to  the current environment, changes the
rootnode and changes the systype.  Under Mach, is  equivalent  to
Mach's  Under  Masscomp/RTU  and Harris CX/UX, sets the universe.
Under Harris CX/UX, or runs a command under  the  specified  uni‐
verse.   Under  Convex/OS,  prints or sets the universe.  The and
environment variables indicate respectively the vendor, operating
system and machine type (microprocessor class or  machine  model)
of the system on which the shell thinks it is running.  These are
particularly  useful  when  sharing  one's home directory between
several types of machines; one  can,  for  example,  set  path  =
(~/bin.$MACHTYPE /usr/ucb /bin /usr/bin .)  in one's and put exe‐
cutables  compiled for each machine in the appropriate directory.
The shell variable indicates what options were  chosen  when  the
shell  was  compiled.  Note also the builtin, the and shell vari‐
ables and the system-dependent locations  of  the  shell's  input
files  (see  Login shells ignore interrupts when reading the file
The shell ignores quit signals unless started with  Login  shells
catch the terminate signal, but non-login shells inherit the ter‐
minate  behavior from their parents.  Other signals have the val‐
ues which the shell inherited from its parent.  In shell scripts,
the shell's handling of interrupt and terminate  signals  can  be
controlled  with  and  its  handling of hangups can be controlled
with and The shell exits on a hangup (see also  the  shell  vari‐
able).   By  default,  the shell's children do too, but the shell
does not send them a hangup when  it  exits.   arranges  for  the
shell to send a hangup to a child when it exits, and sets a child
to ignore hangups.  The shell uses three different sets of termi‐
nal  modes:  used when editing; used when quoting literal charac‐
ters; and used when executing commands.   The  shell  holds  some
settings  in  each mode constant, so commands which leave the tty
in a confused state do not interfere with the shell.   The  shell
also  matches  changes  in the speed and padding of the tty.  The
list of tty modes that are kept constant can be examined and mod‐
ified with the builtin.   Note  that  although  the  editor  uses
CBREAK  mode (or its equivalent), it takes typed-ahead characters
anyway.  The and commands can be used  to  manipulate  and  debug
terminal  capabilities  from  the  command line.  On systems that
support SIGWINCH or SIGWINDOW, the shell adapts to window  resiz‐
ing  automatically  and  adjusts the environment variables and if
set.  If the environment variable contains and fields, the  shell
adjusts  them  to reflect the new window size.  The next sections
of this manual describe all of the available and  A  synonym  for
the  builtin  command.   A synonym for the builtin command.  Does
nothing, successfully.  The first form prints the values  of  all
shell  variables.   The  second  form assigns the value of to The
third form assigns the value of to the 'th component of both  and
its  'th component must already exist.  may contain the operators
etc., as in C.  If contains or then at least that part of must be
placed within and Note that the syntax of has nothing to do  with
that  described  under  The  fourth  and fifth forms increment or
decrement or its 'th component.  The space  between  and  is  re‐
quired.   The  spaces  between  and and between and are optional.
Components of must be separated by  spaces.   Without  arguments,
prints  all  aliases.   With prints the alias for name.  With and
assigns as the alias of is command and filename substituted.  may
not be or See also the builtin command.  Shows the amount of  dy‐
namic  memory  acquired,  broken  down into used and free memory.
With an argument shows the number of free and used blocks in each
size category.  The categories start at size 8 and double at each
step.  This command's output may vary across  system  types,  be‐
cause systems other than the VAX may use a different memory allo‐
cator.   Puts the specified jobs (or, without arguments, the cur‐
rent job) into the background, continuing each if it is  stopped.
may  be  a number, a string, or as described under The first form
either lists all bound keys and the editor command to which  each
is  bound, lists a description of the commands, or binds all keys
to a specific mode.  The second form lists the editor command  to
which  is bound.  The third form binds the editor command to Sup‐
ported options: Lists or changes key-bindings in the  alternative
key  map.   This  is the key map used in command mode.  is inter‐
preted as a control character written (e.g.,  or  (e.g.,  a  meta
character  written (e.g., a function key written (e.g., or an ex‐
tended prefix key written (e.g., is interpreted as a  builtin  or
external command instead of an editor command.  Binds all keys to
the  standard  bindings  for the default editor, as per and Binds
all keys to -style bindings.  Unsets is interpreted as a symbolic
arrow key name, which may be one of or Lists all editor  commands
and  a  short description of each.  Removes 's binding.  Be care‐
ful: does bind to it unbinds completely.  is taken as  a  literal
string  and  treated as terminal input when is typed.  Bound keys
in are themselves reinterpreted, and this continues for ten  lev‐
els  of  interpretation.  Prints a usage message.  Binds all keys
to -style bindings.  Sets Forces a break from option  processing,
so the next word is taken as even if it begins with may be a sin‐
gle  character  or  a string.  If a command is bound to a string,
the first character of the string is  bound  to  and  the  entire
string  is  bound  to  the command.  Control characters in can be
literal (they can be typed by preceding them with the editor com‐
mand normally bound to or written  caret-character  style,  e.g.,
Delete  is  written (caret-question mark).  and can contain back‐
slashed escape sequences (in the style of System  V  as  follows:
Bell.   Backspace.   Escape.   Form feed.  Newline.  Carriage re‐
turn.  Horizontal tab.  Vertical tab.  The ASCII character corre‐
sponding to the octal number nullifies the special meaning of the
following character, if it has any, notably  and  Passes  to  the
BS2000  command  interpreter for execution.  Only non-interactive
commands can be executed, and it is not possible to  execute  any
command that would overlay the image of the current process, like
/EXECUTE  or  /CALL-PROCEDURE.  (BS2000 only) Causes execution to
resume after the of the nearest enclosing or The  remaining  com‐
mands  on  the current line are executed.  Multi-level breaks are
thus possible by writing them all on one line.   Causes  a  break
from  a  resuming  after the Prints the names of all builtin com‐
mands.  A synonym for the builtin command.  Available only if the
shell was so compiled; see the shell  variable.   A  label  in  a
statement  as  discussed below.  If a directory is given, changes
the shell's working directory to If not, changes  to  unless  the
variable  is  not  set, in which case a is required.  If is it is
interpreted as the previous working directory (see (+) If is  not
a  subdirectory of the current directory (and does not begin with
or each component of the variable is checked to see if it  has  a
subdirectory  Finally,  if all else fails but is a shell variable
whose value begins with or then this is tried to see if it  is  a
directory,  and the option is implied.  With prints the final di‐
rectory stack, just like The and flags have the same effect on as
on and they imply (+).  Using forces a break from option process‐
ing so the next word is taken as the directory even if it  begins
with  (+).   See also the and shell variables.  A synonym for the
builtin command.  ...  (+) Without arguments, lists  all  comple‐
tions.   With lists completions for With and ..., defines comple‐
tions.  may be a full command name or a glob-pattern (see It  can
begin  with  to indicate that completion should be used only when
is ambiguous.  specifies which word relative to the current  word
is to be completed, and may be one of the following: Current-word
completion.   is a glob-pattern which must match the beginning of
the current word on the command line.  is ignored when completing
the current word.  Like but includes when completing the  current
word.   Next-word completion.  is a glob-pattern which must match
the beginning of the previous word on the command line.  Like but
must match the beginning of the word two before the current word.
Position-dependent completion.  is a numeric range, with the same
syntax used to index shell variables, which must include the cur‐
rent word.  the list of possible completions, may be one  of  the
following:   Aliases.    Bindings  (editor  commands).   Commands
(builtin or external commands).  External  commands  which  begin
with  the  supplied path prefix.  Directories.  Directories which
begin with the  supplied  path  prefix.   Environment  variables.
Filenames.   Filenames which begin with the supplied path prefix.
Groupnames.  Jobs.  Limits.  Nothing.  Shell variables.  Signals.
Plain files.  Plain files which begin with the supplied path pre‐
fix.  Any variables.  Usernames.  Like but prints when  is  used.
Completions.   Words from the variable Words from the given list.
Words from the output of command.  is an  optional  glob-pattern.
If given, words from only that match are considered and the shell
variable  is  ignored.  The types and may not have a pattern, and
uses as an explanatory message when the editor command  is  used.
is  a single character to be appended to a successful completion.
If null, no character is appended.  If omitted (in which case the
fourth delimiter can also be omitted), a slash is appended to di‐
rectories and a space to other words.  invoked from has the addi‐
tional environment variable set, which contains (as its name  in‐
dicates) contents of the current (already typed in) command line.
One can examine and use contents of the environment variable in a
custom  script  to build more sophisticated completions (see com‐
pletion for included in this package).  Now  for  some  examples.
Some  commands  take only directories as arguments, so there's no
point completing plain files.  > complete cd  'p/1/d/'  completes
only the first word following with a directory.  -type completion
can also be used to narrow down command completion: > co[^D] com‐
plete  compress > complete -co* 'p/0/(compress)/' > co[^D] > com‐
press This completion completes commands (words  in  position  0,
which  begin  with (thus matching to (the only word in the list).
The leading indicates that this completion is  to  be  used  with
only  ambiguous commands.  > complete find 'n/-user/u/' is an ex‐
ample of -type completion.  Any word  following  and  immediately
following  is  completed  from  the list of users.  > complete cc
'c/-I/d/' demonstrates -type completion.  Any word following  and
beginning with is completed as a directory.  is not taken as part
of  the  directory because we used lowercase Different are useful
with different commands.  > complete alias  'p/1/a/'  >  complete
man 'p/*/c/' > complete set 'p/1/s/' > complete true 'p/1/x:Truth
has  no  options./'  These complete words following with aliases,
with commands, and with shell variables.  doesn't  have  any  op‐
tions,  so  does  nothing when completion is attempted and prints
when completion choices are listed.  Note that the  example,  and
several  other examples below, could just as well have used or as
Words can be completed from a variable  evaluated  at  completion
time,   >  complete  ftp  'p/1/$hostnames/'  >  set  hostnames  =
(rtfm.mit.edu  tesla.ee.cornell.edu)  >  ftp  [^D]   rtfm.mit.edu
tesla.ee.cornell.edu  >  ftp [^C] > set hostnames = (rtfm.mit.edu
tesla.ee.cornell.edu  uunet.uu.net)  >  ftp   [^D]   rtfm.mit.edu
tesla.ee.cornell.edu  uunet.uu.net  or from a command run at com‐
pletion time: > complete kill 'p/*/`ps | awk \{print\ \$1\}`/'  >
kill  -9  [^D] 23113 23377 23380 23406 23429 23529 23530 PID Note
that the command does not itself  quote  its  arguments,  so  the
braces,  space and in must be quoted explicitly.  One command can
have multiple completions: > complete dbx 'p/2/(core)/'  'p/*/c/'
completes  the second argument to with the word and all other ar‐
guments with commands.  Note that the  positional  completion  is
specified  before  the next-word completion.  Because completions
are evaluated from left to right,  if  the  next-word  completion
were  specified  first  it  would always match and the positional
completion would never be executed.  This  is  a  common  mistake
when defining a completion.  The pattern is useful when a command
takes  files  with only particular forms as arguments.  For exam‐
ple, > complete cc 'p/*/f:*.[cao]/' completes arguments to  files
ending  in  only  or  can also exclude files, using negation of a
glob-pattern as described under  One  might  use  >  complete  rm
'p/*/f:^*.{c,h,cc,C,tex,1,man,l,y}/'  to  exclude precious source
code from completion.  Of course, one could still  type  excluded
names  manually or override the completion mechanism using the or
editor commands.  The and are like and respectively, but they use
the argument in a different way: to restrict completion to  files
beginning  with  a  particular path prefix.  For example, the Elm
mail program uses as an abbreviation for  one's  mail  directory.
One might use > complete elm c@=@F:$HOME/Mail/@ to complete as if
it  were Note that we used the separator instead of to avoid con‐
fusion with the argument, and we used instead of because home di‐
rectory substitution works at only the beginning of a  word.   is
used  to  add a nonstandard suffix (not space or for directories)
to  completed  words.   >  complete   finger   'c/*@/$hostnames/'
'p/1/u/@'  completes arguments to from the list of users, appends
an and then completes after the from the  variable.   Note  again
the  order  in  which  the  completions  are specified.  Finally,
here's a complex example  for  inspiration:  >  complete  find  \
'n/-name/f/'   'n/-newer/f/'   'n/-{,n}cpio/f/'   \  ´n/-exec/c/'
'n/-ok/c/' 'n/-user/u/' \ 'n/-group/g/' 'n/-fstype/(nfs 4.2)/'  \
'n/-type/(b  c d f l p s)/' \ ´c/-/(name newer cpio ncpio exec ok
user \ group fstype type  atime  ctime  depth  inum  \  ls  mtime
nogroup  nouser  perm  print prune \ size xdev)/' \ 'p/*/d/' This
completes words following or  (note  the  pattern  which  matches
both)  to  files, words following or to commands, words following
and to users and groups respectively and words  following  or  to
members of the given lists.  It also completes the switches them‐
selves from the given list (note the use of -type completion) and
completes anything not otherwise completed to a directory.  Whew.
Remember  that programmed completions are ignored if the word be‐
ing completed is a tilde substitution (beginning with or a  vari‐
able (beginning with See also the builtin command.  Continues ex‐
ecution  of  the nearest enclosing or The rest of the commands on
the current line are executed.  Labels  the  default  case  in  a
statement.   It  should come after all labels.  (+) (+) The first
form prints the directory stack.  The top of the stack is at  the
left  and  the first directory in the stack is the current direc‐
tory.  With or in the output is expanded  explicitly  to  or  the
pathname  of  the  home  directory  for user (+) With entries are
wrapped before they reach the edge of the screen.  (+)  With  en‐
tries  are  printed  one  per line, preceded by their stack posi‐
tions.  (+) If more than one of or is  given,  takes  precedence.
is accepted but does nothing.  The second form with saves the di‐
rectory  stack  to  as a series of and commands.  The second form
with sources which is presumably a directory stack file saved  by
the  option  or the mechanism.  In either case, is used if is not
given and is used if is unset.  Note that  login  shells  do  the
equivalent of on startup and, if is set, before exiting.  Because
only  is normally sourced before should be set in rather than The
third form clears  the  directory  stack.   Writes  each  to  the
shell's  standard output, separated by spaces and terminated with
a newline.  The shell variable may be set to emulate (or not) the
flags and escape sequences of the BSD and/or System V versions of
see and Exercises the terminal capabilities (see in For  example,
sends  the  cursor to the home position, sends it to column 3 and
row 10, and prints in the status line.  If is or prints the value
of that capability or indicating that the terminal does  or  does
not have that capability).  One might use this to make the output
from a shell script less verbose on slow terminals, or limit com‐
mand  output  to  the  number  of lines on the screen: > set his‐
tory=`echotc lines` > @ history--  Termcap  strings  may  contain
wildcards  which  will not echo correctly.  One should use double
quotes when setting a shell variable  to  a  terminal  capability
string,  as  in the following example that places the date in the
status line: > set tosl="`echotc ts 0`" > set frsl="`echotc  fs`"
> echo -n "$tosl";date; echo -n "$frsl" With nonexistent capabil‐
ities return the empty string rather than causing an error.  With
messages  are verbose.  See the description of the and statements
below.  Treats the arguments as input to the shell  and  executes
the  resulting  command(s)  in  the context of the current shell.
This is usually used to execute commands generated as the  result
of  command  or variable substitution, because parsing occurs be‐
fore these substitutions.  See for a sample use of  Executes  the
specified  in place of the current shell.  The shell exits either
with the value of the specified (an expression, as described  un‐
der or, without with the value 0.  Brings the specified jobs (or,
without arguments, the current job) into the foreground, continu‐
ing  each if it is stopped.  may be a number, a string, or as de‐
scribed under See also the editor command.  Applies (which  is  a
file  inquiry operator as described under to each and returns the
results as a space-separated list.  Successively sets  the  vari‐
able  to each member of and executes the sequence of commands be‐
tween this command and the matching (Both and must  appear  alone
on  separate lines.)  The builtin command may be used to continue
the loop prematurely and the builtin command to terminate it pre‐
maturely.  When this command is read from the terminal, the  loop
is read once prompting with (or before any statements in the loop
are executed.  If you make a mistake typing in a loop at the ter‐
minal  you  can  rub  it  out.  Prints the system execution path.
(TCF only) Prints the experimental version  prefix.   (TCF  only)
Like  but the parameter is not recognized and words are delimited
by null characters in the output.  Useful for programs which wish
to use the shell to filename expand a list of words.  is filename
and command-substituted to yield a string of the form  The  shell
rewinds its input as much as possible, searches for a line of the
form possibly preceded by blanks or tabs, and continues execution
after  that line.  Prints a statistics line indicating how effec‐
tive the internal hash table has been at locating  commands  (and
avoiding  's).   An  is attempted for each component of the where
the hash function indicates a possible hit, and in each component
which does not begin with a On machines without prints  only  the
number  and  size of hash buckets.  (+) (+) The first form prints
the history event list.  If is given only the most recent  events
are  printed  or saved.  With the history list is printed without
leading numbers.  If is specified, timestamps are printed also in
comment form.  This can be used to  produce  files  suitable  for
loading  with  or With the order of printing is most recent first
rather than oldest first.  The second form with saves the history
list to If the first word of the shell variable is set to a  num‐
ber, at most that many lines are saved.  If the second word of is
set  to the history list is merged with the existing history file
instead of replacing it (if there is  one)  and  sorted  by  time
stamp.   (+)  Merging  is  intended for an environment like the X
Window System with several shells in simultaneous  use.   If  the
second  word  of is and the third word is set to the history file
update will be serialized with other shell  sessions  that  would
possibly  like  to  merge  history at exactly the same time.  The
second form with appends (which  is  presumably  a  history  list
saved  by  the  option or the mechanism) to the history list.  is
like but the contents of are merged into  the  history  list  and
sorted by timestamp.  In either case, is used if is not given and
is  used  if  is unset.  Note that is exactly like except that it
does not require a filename.   Note  that  login  shells  do  the
equivalent of on startup and, if is set, before exiting.  Because
only  is  normally sourced before should be set in rather than If
is set, the first and second forms print  and  save  the  literal
(unexpanded) form of the history list.  The third form clears the
history  list.  With runs such that it will exit on a hangup sig‐
nal and arranges for the shell to send it a  hangup  signal  when
the  shell  exits.  Note that commands may set their own response
to hangups, overriding Without an argument, causes the non-inter‐
active shell only to exit on a hangup for the  remainder  of  the
script.  See also and the builtin command.  If (an expression, as
described  under evaluates true, then is executed.  Variable sub‐
stitution on happens early, at the same time it does for the rest
of the command.  must be  a  simple  command,  not  an  alias,  a
pipeline,  a command list or a parenthesized command list, but it
may have arguments.  Input/output redirection occurs even  if  is
false  and  is thus executed; this is a bug.  If the specified is
true then the commands to the first are executed; otherwise if is
true then the commands to the second are executed, etc.  Any num‐
ber of pairs are possible; only one is needed.  The part is like‐
wise optional.  (The words and must appear at  the  beginning  of
input  lines; the must appear alone on its input line or after an
Adds each to the current environment.  There is no way to  remove
a  shared library.  (Domain/OS only) The first form lists the ac‐
tive jobs.  With lists process IDs in addition to the normal  in‐
formation.   On TCF systems, prints the site on which each job is
executing.  The second form with the option sets the process  ti‐
tle to using where available.  If no is provided, the process ti‐
tle will be cleared.  The first form lists the signal names.  The
second  form  sends the specified (or, if none is given, the TERM
(terminate) signal) to the specified jobs or processes.  may be a
number, a string, or as described under Signals are either  given
by number or by name (as given in stripped of the prefix There is
no  default  entering  just does not send a signal to the current
job.  If the  signal  being  sent  is  TERM  (terminate)  or  HUP
(hangup),  then the job or process is sent a CONT (continue) sig‐
nal as well.  Limits the consumption by the current  process  and
each  process it creates to not individually exceed on the speci‐
fied If no is given, then the current limit for is  printed.   If
no  is  given,  then  all  limitations are given.  If the flag is
given, the hard limits are used instead of  the  current  limits.
The  hard  limits  impose  a ceiling on the values of the current
limits.  Only the super-user may raise the  hard  limits,  but  a
user  may  lower  or  raise  the  current limits within the legal
range.  Controllable types currently include (if supported by the
OS): Maximum number of threads for this  process.   Size  of  the
largest  core  dump that will be created.  Maximum number of cpu-
seconds to be used  by  each  process.   Maximum  growth  of  the
data+stack  region via beyond the end of the program text.  Maxi‐
mum number of open files for this process.  Largest  single  file
which can be created.  Maximum amount of memory a process may al‐
locate  per system call.  Maximum number of kqueues allocated for
this process.  Maximum number of locks for  this  user.   Maximum
number  of  bytes  in  POSIX mqueues for this user.  Maximum nice
priority the user is allowed to raise mapped from  [19...-20]  to
[0...39] for this user.  Maximum number of simultaneous processes
for  this  user  id.   Maximum  realtime  priority for this user.
Timeout for RT tasks in microseconds for this user.  Maximum num‐
ber of pending signals for this user.  Maximum number of simulta‐
neous threads (lightweight processes) for this user id.   Maximum
size which a process may lock into memory using Maximum amount of
physical  memory  a  process  may have allocated to it at a given
time.  Maximum number of POSIX  advisory  locks  for  this  user.
Maximum  number  of pseudo-terminals for this user.  Maximum size
of socket buffer usage for this user.  Maximum size of the  auto‐
matically-extended  stack  region.   Maximum amount of swap space
reserved or used for this user.  Maximum number  of  threads  for
this  process.   Maximum  amount  of virtual memory a process may
have allocated to it at a given time  (address  space).   may  be
given as a (floating point or integer) number followed by a scale
factor.   For all limits other than the default scale is or (1024
bytes); a scale factor of or (1048576 bytes)  or  or  (1073741824
bytes)  may  also  be used.  For the default scaling is while for
minutes or for hours, or a time of the form  giving  minutes  and
seconds  may be used.  If is then the limitation on the specified
is removed (this is equivalent to the builtin command).  For both
names and scale factors, unambiguous prefixes of the  names  suf‐
fice.   Prints  the shell variable and reports on each user indi‐
cated in who is logged in, regardless of when  they  last  logged
in.   See also Terminates a login shell, replacing it with an in‐
stance of This is one way to log off, included for  compatibility
with Terminates a login shell.  Especially useful if is set.  (+)
Lists  files  like but much faster.  identifies each type of spe‐
cial file in the listing with a special character suffix:  Direc‐
tory.   Executable.  Block device.  Character device.  Named pipe
(systems with named pipes only).  Socket  (systems  with  sockets
only).  Symbolic link (systems with symbolic links only).  Hidden
directory  (AIX only) or context dependent (HP/UX only).  Network
special (HP/UX only).  If the shell  variable  is  set,  symbolic
links  are  identified  in more detail (on only systems that have
them, of course): Symbolic link  to  a  non-directory.   Symbolic
link  to  a  directory.   Orphaned  (broken) symbolic link.  also
slows down and causes partitions holding files pointed to by sym‐
bolic links to be mounted.  If the shell variable is set to or or
any combination thereof (e.g., they are used as flags  to  making
it act like ls -xF ls -Fa ls -FA or a combination, for example On
machines  where  is not the default, acts like unless contains an
in which case it acts like passes its arguments to if it is given
any switches, so generally does the right thing.  The builtin can
list files using different colors depending on the file  type  or
extension.   See the shell variable and the and environment vari‐
ables.  The first form migrates the process or job  to  the  site
specified  or  the  default  site  determined by the system path.
(TCF only) The second form is equivalent to in that  it  migrates
the  current  process to the specified site.  Migrating the shell
itself can cause unexpected behavior, because the shell does  not
like  to lose its tty.  (TCF only) Equivalent to as per Available
only if the shell was so compiled; see the shell  variable.   In‐
crements  the scheduling priority for the shell by or, without by
4.  With runs at the appropriate priority.  The greater  the  the
less cpu the process gets.  The super-user may decrement the pri‐
ority  by  using  is  always executed in a sub-shell, and the re‐
strictions placed on commands in simple statements  apply.   With
runs such that it will ignore hangup signals.  Note that commands
may  set their own response to hangups, overriding Without an ar‐
gument, causes the non-interactive shell only to  ignore  hangups
for  the  remainder of the script.  See also and the builtin com‐
mand.  Causes the shell to notify the  user  asynchronously  when
the  status of any of the specified jobs (or, without the current
job) changes, instead of waiting until  the  next  prompt  as  is
usual.  may be a number, a string, or as described under See also
the  shell  variable.  Controls the action of the shell on inter‐
rupts.  Without arguments, restores the  default  action  of  the
shell  on  interrupts,  which is to terminate shell scripts or to
return to the terminal command input level.  With causes all  in‐
terrupts  to be ignored.  With causes the shell to execute a when
an interrupt is received or a child process terminates because it
was interrupted.  is ignored if the shell is running detached and
in system startup files (see where interrupts are  disabled  any‐
way.   Without arguments, pops the directory stack and returns to
the new top directory.  With a number discards the  th  entry  in
the  stack.   Finally,  all  forms  of  print the final directory
stack, just like The shell variable can be set  to  prevent  this
and the flag can be given to override The and flags have the same
effect  on  as on (+) Prints the names and values of all environ‐
ment variables or, with the value  of  the  environment  variable
Without  arguments,  exchanges the top two elements of the direc‐
tory stack.  If is set, without arguments acts as like  (+)  With
pushes the current working directory onto the directory stack and
changes to If is it is interpreted as the previous working direc‐
tory  (see (+) If is set, removes any instances of from the stack
before pushing it onto the stack.  (+) With a number rotates  the
th  element  of  the directory stack around to be the top element
and changes to it.  If is set, however, extracts  the  th  direc‐
tory, pushes it onto the top of the stack and changes to it.  (+)
Finally,  all forms of print the final directory stack, just like
The shell variable can be set to prevent this and the flag can be
given to override The and flags have the same effect on as on (+)
Causes the internal hash table of the contents of the directories
in the variable to be recomputed.  This is needed  if  the  shell
variable  is not set and new commands are added to directories in
while you are logged in.  With a new command will be found  auto‐
matically,  except  in  the special case where another command of
the same name which is located in a different  directory  already
exists  in the hash table.  Also flushes the cache of home direc‐
tories built by tilde expansion.  The specified which is  subject
to  the same restrictions as the in the one line statement above,
is executed times.  I/O redirections occur exactly once, even  if
is  0.   Changes  the  rootnode to so that will be interpreted as
(Domain/OS only) (+) The first form  prints  the  scheduled-event
list.   The  shell  variable  may  be set to define the format in
which the scheduled-event list is printed.  The second form  adds
to  the  scheduled-event  list.   For example, > sched 11:00 echo
It\'s eleven o\'clock.  causes the shell to echo at 11  AM.   The
time  may be in 12-hour AM/PM format > sched 5pm set prompt='[%h]
It\'s after 5; go home: >' or may  be  relative  to  the  current
time:  >  sched +2:15 /usr/lib/uucp/uucico -r1 -sother A relative
time specification may not use AM/PM format.  The third form  re‐
moves  item  from  the  event  list:  > sched 1  Wed Apr  4 15:42
/usr/lib/uucp/uucico  -r1  -sother  2   Wed  Apr   4  17:00   set
prompt=[%h]  It's  after  5; go home: > > sched -2 > sched 1  Wed
Apr  4 15:42  /usr/lib/uucp/uucico -r1 -sother A command  in  the
scheduled-event  list is executed just before the first prompt is
printed after the time when the command is scheduled.  It is pos‐
sible to miss the exact time when the command is to be  run,  but
an  overdue  command  will execute at the next prompt.  A command
which comes due while the shell is waiting for user input is exe‐
cuted immediately.  However, normal operation of an  already-run‐
ning  command  will  not be interrupted so that a scheduled-event
list element may be run.  This mechanism is similar to,  but  not
the  same as, the command on some Unix systems.  Its major disad‐
vantage is that it may not run a command at exactly the specified
time.  Its major advantage is that because runs directly from the
shell, it has access to shell  variables  and  other  structures.
This  provides a mechanism for changing one's working environment
based on the time of day.  (+) The  first  form  of  the  command
prints the value of all shell variables.  Variables which contain
more  than a single word print as a parenthesized word list.  The
second form sets to the null string.  The third form sets to  the
single  The fourth form sets to the list of words in In all cases
the value is command and filename expanded.  If is specified, the
value is set read-only.  If or are  specified,  set  only  unique
words  keeping  their  order.   prefers the first occurrence of a
word, and the last.  The fifth form sets the 'th component of  to
this component must already exist.  The sixth form lists only the
names  of  all  shell  variables that are read-only.  The seventh
form makes read-only, whether or not it has a value.  The  eighth
form  is  the  same  as the third form, but make read-only at the
same time.  These arguments can be repeated to  set  and/or  make
read-only multiple variables in a single set command.  Note, how‐
ever,  that  variable  expansion happens for all arguments before
any setting occurs.  Note also that can be adjacent to  both  and
or  separated  from both by whitespace, but cannot be adjacent to
only one or the other.  See also the  builtin  command.   Without
arguments,  prints  the names and values of all environment vari‐
ables.  With sets the environment variable to or, without to  the
null string.  Equivalent to (Mach only) Sets the system execution
path.   (TCF  only)  Tells the shell to believe that the terminal
capability (as defined in has the value  No  sanity  checking  is
done.   Concept terminal users may have to to get proper wrapping
at the rightmost column.  (+) Controls which tty modes  (see  the
shell does not allow to change.  or tells to act on the or set of
tty  modes respectively; without or is used.  Without other argu‐
ments, lists the modes in the chosen set which are  fixed  on  or
off  The  available modes, and thus the display, vary from system
to system.  With lists all tty modes in the chosen set whether or
not they are fixed.  With or fixes on or off or  removes  control
from  in  the  chosen set.  For example, fixes mode on and allows
commands to turn mode on or off, both when the shell is executing
commands.  Set the experimental version prefix to or  removes  it
if is omitted.  (TCF only) Without arguments, discards and shifts
the  members of to the left.  It is an error for not to be set or
to have fewer than one word as value.   With  performs  the  same
function  on  The shell reads and executes commands from The com‐
mands are not placed on the history list.  If any are given, they
are placed in (+) commands may be nested; if they are nested  too
deeply  the shell may run out of file descriptors.  An error in a
at any level terminates all nested commands.  With  commands  are
placed  on  the history list instead of being executed, much like
Stops the specified jobs or processes which are executing in  the
background.   may  be  a  number, a string, or as described under
There is no default entering just does not stop the current  job.
Causes  the  shell  to stop in its tracks, much as if it had been
sent a stop signal with This is most often used  to  stop  shells
started  by  Each case label is successively matched, against the
specified which is first command and filename expanded.  The file
metacharacters and may be used in  the  case  labels,  which  are
variable expanded.  If none of the labels match before a label is
found,  then the execution begins after the label.  Each case la‐
bel and the label must appear at the beginning of  a  line.   The
command  causes execution to continue after the Otherwise control
may fall through case labels and default labels as in C.   If  no
label  matches and there is no default, execution continues after
the Lists the values of all terminal capabilities (see  Tests  if
(or  the  current  value  of  if no is given) has an entry in the
hosts database.  Prints the terminal type to stdout and returns 0
if an entry is present otherwise returns 1.  Executes (which must
be a simple command, not an alias, a pipeline, a command list  or
a  parenthesized  command  list) and prints a time summary as de‐
scribed under the variable.  If necessary, an extra shell is cre‐
ated to print the time  statistic  when  the  command  completes.
Without prints a time summary for the current shell and its chil‐
dren.   Sets  the  file creation mask to which is given in octal.
Common values for the mask are 002,  giving  all  access  to  the
group and read and execute access to others, and 022, giving read
and  execute  access to the group and others.  Without prints the
current file creation mask.   Removes  all  aliases  whose  names
match  Thus  removes all aliases.  It is not an error for nothing
to be ed.  Removes all completions whose names match Thus removes
all completions.  It is not an error for nothing to be  d.   Dis‐
ables  use  of  the internal hash table to speed location of exe‐
cuted programs.  Sets the universe to (Masscomp/RTU only) Removes
the limitation on or, if no is specified, all limitations.   With
the  corresponding  hard limits are removed.  Only the super-user
may do this.  Note that may not exit successful, since most  sys‐
tems do not allow to be unlimited.  With errors are ignored.  Re‐
moves  all variables whose names match unless they are read-only.
Thus removes all variables unless they are read-only; this  is  a
bad idea.  It is not an error for nothing to be Removes all envi‐
ronment  variables whose names match Thus removes all environment
variables; this is a bad idea.  It is not an error for nothing to
be ed.  Without arguments, prints With sets to With and  executes
under  may  be  or (Domain/OS only) The shell waits for all back‐
ground jobs.  If the shell is interactive, an interrupt will dis‐
rupt the wait and cause the shell to print the names and job num‐
bers of all outstanding jobs.  Sets the  universe  to  (Convex/OS
only)  An alternate name for the builtin command.  Available only
if the shell was so compiled; see the  shell  variable.   Reports
all  known  instances of including aliases, builtins and executa‐
bles in Displays the command that will be executed by  the  shell
after substitutions, searching, etc.  The builtin command is just
like  but  it correctly reports aliases and builtins and is 10 to
100 times faster.  See also the  editor  command.   Executes  the
commands  between  the  and the matching while (an expression, as
described under evaluates non-zero.  and  must  appear  alone  on
their  input lines.  and may be used to terminate or continue the
loop prematurely.  If the  input  is  a  terminal,  the  user  is
prompted  the first time through the loop as with If set, each of
these aliases executes automatically at the indicated time.  They
are all initially undefined.  Supported special aliases are: Runs
when the shell wants to ring the terminal bell.  Runs after every
change of working directory.  For example, if the user is working
on an X window system using and  a  re-parenting  window  manager
that  supports  title bars such as and does > alias cwdcmd  'echo
-n "^[]2;${HOST}:$cwd ^G"' then the shell will change  the  title
of the running to be the name of the host, a and the full current
working  directory.   A  fancier way to do that is > alias cwdcmd
'echo -n "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"' This will  put  the
hostname  and  working  directory  on  the title bar but only the
hostname in the icon manager menu.  Note that putting a or in may
cause an infinite loop.  It is the author's opinion  that  anyone
doing  so  will  get what they deserve.  Runs before each command
gets executed, or when the command changes state.  This is  simi‐
lar  to but it does not print builtins.  > alias jobcmd  'echo -n
"^[]2\;\!#:q^G"' then executing will put the  command  string  in
the xterm title bar.  Invoked by the editor command.  The command
name  for  which  help is sought is passed as sole argument.  For
example, if one does > alias helpcommand '\!:1 --help'  then  the
help display of the command itself will be invoked, using the GNU
help  calling  convention.  Currently there is no easy way to ac‐
count for various calling conventions (e.g., the  customary  Unix
except  by  using  a table of many commands.  Runs every minutes.
This provides a convenient means for checking on common  but  in‐
frequent  changes  such  as new mail.  For example, if one does >
set tperiod = 30 > alias periodic checknews then the program runs
every 30 minutes.  If is set but is unset or set  to  0,  behaves
like  Runs  just  before each prompt is printed.  For example, if
one does > alias precmd date then  runs  just  before  the  shell
prompts for each command.  There are no limits on what can be set
to  do,  but discretion should be used.  Runs before each command
gets executed.  > alias postcmd  'echo -n  "^[]2\;\!#:q^G"'  then
executing  will  put  the  command string in the xterm title bar.
Specifies the interpreter for executable  scripts  which  do  not
themselves  specify  an  interpreter.  The first word should be a
full path name to the desired interpreter (e.g., or The variables
described in this section have special meaning to the shell.  The
shell sets and at startup; they do not change  thereafter  unless
changed  by  the user.  The shell updates and when necessary, and
sets on logout.  The shell synchronizes and with the  environment
variables  of  the  same names: whenever the environment variable
changes the shell changes the  corresponding  shell  variable  to
match  (unless  the  shell variable is read-only) and vice versa.
Note that although and have identical meanings, they are not syn‐
chronized in this manner, and that the shell  automatically  con‐
verts  between  the  different  formats  of and Supported special
shell variables are: If set, filename completion adds to the  end
of  directories  and a space to the end of normal files when they
are matched exactly.  Set by default.  If set, 's  autolock  fea‐
ture  uses  its  value instead of the local username for kerberos
authentication.  If set, all times are  shown  in  12-hour  AM/PM
format.  This variable selects what is propagated to the value of
the  variable.   For  more information see the description of the
variable below.  The arguments to the shell.  Positional  parame‐
ters  are  taken  from i.e., is replaced by etc.  Set by default,
but usually empty in interactive shells.  If set, the editor com‐
mand is invoked automatically before each completion attempt.  If
set, the editor command is invoked automatically before each com‐
pletion attempt.  If this is set to then only history will be ex‐
panded and a second completion will expand  filenames.   If  set,
possibilities  are  listed after an ambiguous completion.  If set
to possibilities are listed only when no new characters are added
by completion.  The first word is the number of minutes of  inac‐
tivity  before automatic logout.  The optional second word is the
number of minutes of inactivity before automatic  locking.   When
the  shell automatically logs out, it prints sets the variable to
and exits.  When the shell automatically locks, the user  is  re‐
quired  to enter their password to continue working.  Five incor‐
rect attempts result in automatic logout.  Set to (automatic  lo‐
gout  after  60  minutes, and no locking) by default in login and
superuser shells, but not if the shell thinks it is running under
a window system (i.e., the environment variable is set), the  tty
is  a  pseudo-tty (pty) or the shell was not so compiled (see the
shell variable).  Unset or set it to to disable automatic logout.
See also the and shell variables.  If set, the internal hash  ta‐
ble  of  the  contents of the directories in the variable will be
recomputed if a command is not found in the hash table.  In addi‐
tion, the list of available commands will  be  rebuilt  for  each
command  completion  or  spelling correction attempt if set to or
respectively; if set to this will be done  for  both  cases.   If
set,  backslashes  (`\')  always  quote and This may make complex
quoting tasks easier, but it can cause syntax errors in  scripts.
The  file name of the message catalog.  If set, uses as a message
catalog instead of default A list of directories in which  should
search for subdirectories if they aren't found in the current di‐
rectory.  If not set, requires a directory and will not go to the
directory  if  it's omitted.  This is set by default.  If set, it
enables color display for the builtin and it passes to (or if  is
set).   Alternatively,  it  can  be set to only or only to enable
color for a specific command.  Setting it to nothing  is  equiva‐
lent  to setting it to Color is disabled if the output is not di‐
rected to a terminal, unless is set.  If set,  it  enables  color
escape  sequence  for NLS message files, and display colorful NLS
messages.  If set, the command which was passed to the shell with
the flag.  If set, the shell will evaluate expressions  right  to
left, like the original If set to the completion becomes case in‐
sensitive.   If  set to completion ignores case and considers hy‐
phens and underscores to be equivalent; it will also treat  peri‐
ods,  hyphens  and underscores and as word separators.  If set to
completion matches uppercase and underscore characters explicitly
and matches lowercase and hyphens in a  case-insensitive  manner;
it  will  treat  periods, hyphens and underscores as word separa‐
tors.  If set to a list of commands, the shell will continue  the
listed  commands,  instead  of  starting a new one.  Same as con‐
tinue,  but  the  shell  will  execute:  echo   `pwd`   $argv   >
~/.<cmd>_pause;  %<cmd>  If  set  to  commands  are automatically
spelling-corrected.  If set to commands  are  automatically  com‐
pleted.  If set to the entire command line is corrected.  If set,
newlines  and  carriage  returns  in command substitution are re‐
placed by spaces.  Set by default.  The full pathname of the cur‐
rent directory.  See also the and shell variables.  If  set,  ex‐
tracts  the th directory from the directory stack rather than ro‐
tating it to the top.  The default location in which and look for
a history file.  If unset, is used.   Because  only  is  normally
sourced  before  should be set in rather than An array of all the
directories on the directory stack.  is the current  working  di‐
rectory,  the  first  directory on the stack, etc.  Note that the
current working directory is but  in  directory  stack  substitu‐
tions,  etc.  One can change the stack arbitrarily by setting but
the first element (the current working directory) is always  cor‐
rect.   See  also the and shell variables.  Has an effect only if
is listed as part of the shell variable.  If set  to  it  enables
display  and  editing EUC-kanji(Japanese) code.  If set to it en‐
ables display and editing Shift-JIS(Japanese) code.  If set to it
enables display and editing Big5(Chinese) code.  If set to it en‐
ables display and editing Utf8(Unicode)  code.   If  set  to  256
characters  in the following format, it enables display and edit‐
ing of original multi-byte code format: Each character in the 256
character value corresponds (from left to  right)  to  the  ASCII
codes  0x00, 0x01, 0x02, ..., 0xfd, 0xfe, 0xff at the same index.
Each character is set to number 0, 1, 2 or 3, with  the  meaning:
Not used for multi-byte characters.  Used for the first byte of a
multi-byte  character.   Used for the second byte of a multi-byte
character.  Used for both the first byte and  second  byte  of  a
multi-byte  character.   For  example,  if  set to 256 characters
starting with the value is interpreted as: The GNU coreutils ver‐
sion of cannot display multi-byte filenames without  the  option.
If you are using this version, set the second word of dspmbyte to
If  not,  for example, cannot display multi-byte filenames.  Note
that this variable can only be used if  KANJI  and  DSPMBYTE  has
been  defined  at compile time.  If set, removes any instances of
from the stack before pushing it onto the stack.   If  set,  each
command  with its arguments is echoed just before it is executed.
For non-builtin commands all  expansions  occur  before  echoing.
Builtin commands are echoed before command and filename substitu‐
tion, because these substitutions are then done selectively.  Set
by  the  command  line option.  The style of the builtin.  May be
set to: Don't echo a newline if the first argument is the default
for Recognize backslashed escape sequences in echo strings.  Rec‐
ognize both the flag and backslashed escape  sequences;  the  de‐
fault  for Recognize neither.  Set by default to the local system
default.  The BSD and System V options are described in  the  man
pages  on the appropriate systems.  If set, the command-line edi‐
tor is used.  Set by default in interactive shells.   A  list  of
command  names  for the editor command to match.  If not set, the
if unset) and if unset) environment variables will  be  used  in‐
stead.  If set, the and prompt sequences (see the shell variable)
indicate  skipped  directories  with  an  ellipsis instead of The
user's effective user ID.  The first matching passwd  entry  name
corresponding to the effective user ID.  Lists file name suffixes
to  be  ignored  by completion.  In completion is always used and
this variable is ignored by default.  If is unset, then the  tra‐
ditional  completion  is  used.  If set in filename completion is
used.  The user's real group ID.  If set, wild-card glob patterns
will match files and directories beginning with except for and If
set, the and file glob patterns will match any string of  charac‐
ters  including traversing any existing sub-directories.  For ex‐
ample, will list all the .c files in the current directory  tree.
If  used  by  itself, it will match zero or more sub-directories.
For example, will list any file  named  in  the  directory  tree;
whereas  will  match  any file in the directory tree ending in To
prevent problems with recursion, the glob-pattern  will  not  de‐
scend  into  a symbolic link containing a directory.  To override
this, use The user's group name.  If set, the incremental  search
match  (in and and the region between the mark and the cursor are
highlighted in reverse video.  Highlighting  requires  more  fre‐
quent  terminal  writes, which introduces extra overhead.  If you
care about terminal performance, you may want to leave  this  un‐
set.  A string value determining the characters used in The first
character  of its value is used as the history substitution char‐
acter, replacing the default character The  second  character  of
its  value  replaces  the character in quick substitutions.  Con‐
trols handling of duplicate entries in the history list.  If  set
to  only  unique  history events are entered in the history list.
If set to and the last history event is the same as  the  current
command,  then the current command is not entered in the history.
If set to and the same event is found in the history  list,  that
old  event  gets  erased and the current one gets inserted.  Note
that the and options renumber history  events  so  there  are  no
gaps.  The default location in which and look for a history file.
If  unset,  is used.  is useful when sharing the same home direc‐
tory between different machines, or when saving  separate  histo‐
ries  on  different  terminals.  Because only is normally sourced
before should be set in rather than If set,  builtin  and  editor
commands  and  the mechanism use the literal (unexpanded) form of
lines in the history list.  See also  the  editor  command.   The
first  word  indicates the number of history events to save.  The
optional second word (+) indicates the format in which history is
printed; if not given, is used.  The  format  sequences  are  de‐
scribed  below  under  note the variable meaning of Set to by de‐
fault.  Initialized to the home directory of  the  invoker.   The
filename  expansion  of  refers  to this variable.  If set to the
empty string or and the input device is a terminal,  the  command
(usually generated by the user by typing on an empty line) causes
the  shell  to print instead of exiting.  This prevents the shell
from accidentally being killed.  Historically this setting exited
after 26 successive EOF's to avoid infinite loops.  If set  to  a
number  the  shell  ignores - 1 consecutive s and exits on the th
(+).  If unset, is used, i.e., the shell exits  on  a  single  If
set,  the  shell  treats  a  directory name typed as a command as
though it were a request to change to that directory.  If set  to
the  change  of directory is echoed to the standard output.  This
behavior is inhibited in non-interactive shell  scripts,  or  for
command  strings  with  more  than  one word.  Changing directory
takes precedence over executing a like-named command, but  it  is
done  after  alias  substitutions.  Tilde and variable expansions
work as expected.  If set to or puts the editor into  that  input
mode  at the beginning of each line.  Controls handling of dupli‐
cate entries in the kill ring.  If set to only unique strings are
entered in the kill ring.  If set to and the last  killed  string
is the same as the current killed string, then the current string
is  not  entered  in  the ring.  If set to and the same string is
found in the kill ring, the old string is erased and the  current
one  is inserted.  Indicates the number of killed strings to keep
in memory.  Set to by default.  If unset or set to less than  the
shell  will  only  keep the most recently killed string.  Strings
are put in the killring by the editor commands that delete (kill)
strings of text, e.g.  etc, as well as the command.   The  editor
command  will  yank the most recently killed string into the com‐
mand-line, while (see can be used to yank earlier killed strings.
If set to or or any combination thereof (e.g., they are  used  as
flags  to  making  it act like ls -xF ls -Fa ls -FA or a combina‐
tion, for example If the first  word  contains  shows  all  files
(even  if  they start with a If the first word contains shows all
files but and If the first word contains sorts across instead  of
down.  If the second word of is set, it is used as the path to If
set,  all jobs are listed when a job is suspended.  If set to the
listing is in long format.  If set, the builtin command shows the
type of file to which each symbolic  link  points.   The  maximum
number of items which the editor command will list without asking
first.  The maximum number of rows of items which the editor com‐
mand will list without asking first.  Set by the shell if it is a
login  shell.   Setting or unsetting it within a shell has no ef‐
fect.  See also Set by the shell to before a normal  logout,  be‐
fore an automatic logout, and if the shell was killed by a hangup
signal (see See also the shell variable.  A list of files and di‐
rectories  to  check  for incoming mail, optionally preceded by a
numeric word.  Before each prompt,  if  10  minutes  have  passed
since  the  last  check,  the shell checks each file and displays
(or, if contains multiple files, if the filesize is greater  than
zero  in size and has a modification time greater than its access
time.  If you are in a login shell, then no mail file is reported
unless it has been modified after the time the shell has  started
up, to prevent redundant notifications.  Most login programs will
tell you whether or not you have mail when you log in.  If a file
specified  in  is  a  directory,  the  shell will count each file
within that directory as a separate message, and will  report  or
as  appropriate.   This  functionality  is provided primarily for
those systems which store mail in this manner, such as the Andrew
Mail System.  If the first word of is numeric it is  taken  as  a
different  mail  checking  interval, in seconds.  Under very rare
circumstances, the shell may report instead of If set to  comple‐
tion  never  beeps.   If  set  to  it beeps only when there is no
match.  If set to it beeps when there are multiple  matches.   If
set to it beeps when there is one exact and other longer matches.
If  unset, is used.  If set, beeping is completely disabled.  See
also If set, restrictions are placed on output redirection to in‐
sure that files are not accidentally destroyed and that  redirec‐
tions  refer  to existing files, as described in the section.  If
contains an interacive confirmation is presented, rather than  an
error.   If  contains is allowed on empty files.  If set, disable
the printing of in the time specifiers at the change of hour.  If
set, and are inhibited.  This is most  useful  in  shell  scripts
which  do  not  deal with filenames, or after a list of filenames
has been obtained and further expansions are not  desirable.   If
set  and the shell supports Kanji (see the shell variable), it is
disabled so that the meta key can be used.  If set,  a  or  which
does  not  match any existing files is left untouched rather than
causing an error.  It is still an error for the  substitution  to
be  malformed.  For example, still gives an error.  A list of di‐
rectories (or glob-patterns which  match  directories;  see  that
should  not  be  during  a completion operation.  This is usually
used to exclude directories which take too much time to for exam‐
ple If set, the shell announces job  completions  asynchronously.
The  default is to present job completions just before printing a
prompt.  The user's real organization ID.  (Domain/OS  only)  The
old working directory, equivalent to the used by and See also the
and  shell variables.  If set, enable the printing of padding '0'
for hours, in 24 and 12 hour formats.   E.g.,  versus  To  retain
compatibily with older versions numeric variables starting with 0
are  not  interpreted  as  octal.   Setting this variable enables
proper octal parsing.  A list of directories in which to look for
executable commands.  A null word specifies  the  current  direc‐
tory.  If there is no variable then only full path names will ex‐
ecute.  is set by the shell at startup from the environment vari‐
able  or,  if does not exist, to a system-dependent default, such
as The shell may put first or last in or omit it entirely depend‐
ing on how it was compiled; see  the  shell  variable.   A  shell
which  is given neither the nor the option hashes the contents of
the directories in after reading and each time is reset.  If  one
adds  a  new command to a directory in while the shell is active,
one may need to do a for the shell to find it.  If set and an in‐
teractive program exits with a non-zero status, the shell  prints
The  string which is printed before reading each command from the
terminal.  may include any of the following formatting  sequences
(+),  which  are  replaced  by the given information: The current
working directory.  The current working directory, but with one's
home directory represented by and other users'  home  directories
represented  by as per substitution happens only if the shell has
already used in a pathname in the current session.  The  trailing
component  of  the  current working directory, or trailing compo‐
nents if a digit is given.  If begins with the number of  skipped
components precede the trailing component(s) in the format If the
shell  variable  is set, skipped components are represented by an
ellipsis so the whole becomes substitution is done as  in  above,
but  the  component is ignored when counting trailing components.
Like but without substitution.  The current history event number.
The full hostname.  The hostname up to  the  first  Start  (stop)
standout  mode.   Start (stop) boldfacing mode.  Start (stop) un‐
derline mode.  The time of day in 12-hour AM/PM format.  Like but
in 24-hour format (but see the shell variable).  The time of  day
in  12-hour AM/PM format, with seconds.  Like but in 24-hour for‐
mat (but see the shell variable).  is parsed as in is  parsed  as
in  A single The user name.  The effective user name.  The number
of jobs.  The weekday in format.  The day in format.   The  month
in  format.   The month in format.  The year in format.  The year
in format.  The shell's tty.  Clears from the end of  the  prompt
to  end of the display or the end of the line.  Expands the shell
or environment variable name immediately after the (or the  first
character of the shell variable) for normal users, (or the second
character of for the superuser.  Includes as a literal escape se‐
quence.  It should be used only to change terminal attributes and
should not move the cursor location.  This cannot be the last se‐
quence in The return code of the command executed just before the
prompt.   In  the status of the parser.  In the corrected string.
In the history string.  and are available in only eight-bit-clean
shells; see the shell variable.  The bold, standout and underline
sequences are often used to distinguish a superuser  shell.   For
example,  If or is used, and is not set, then print on the change
of hour (i.e, minutes) instead of the actual time.   Set  by  de‐
fault  to in interactive shells.  The string with which to prompt
in and loops and after lines ending in The same format  sequences
may  be used as in note the variable meaning of Set by default to
in interactive shells.  The string with which to prompt when con‐
firming automatic spelling correction.  The same format sequences
may be used as in note the variable meaning of Set by default  to
in  interactive  shells.  If set (to a two-character string), the
formatting sequence in the shell variable is  replaced  with  the
first character for normal users and the second character for the
superuser.   If  set,  without arguments does like If set, and do
not print the directory stack.  If set, completion  completes  on
an  exact match even if a longer match is possible.  If set, com‐
mand listing displays only files in the path that are executable.
Slow.  If set, the user is  prompted  before  is  executed.   The
string  to  print on the right-hand side of the screen (after the
command input) when the prompt is being displayed  on  the  left.
It recognizes the same formatting characters as It will automati‐
cally disappear and reappear as necessary, to ensure that command
input isn't obscured, and will appear only if the prompt, command
input,  and itself will fit together on the first line.  If isn't
set, then will be printed after the prompt and before the command
input.  If set, the shell does before exiting.  If the first word
is set to a number, at most that many directory stack entries are
saved.  If set, the shell does before exiting.  If the first word
is set to a number, at most that many lines are saved.  (The num‐
ber should be less than or equal to the number entries; if it  is
set  to greater than the number of settings, only entries will be
saved.)  If the second word is set to the history list is  merged
with  the existing history file instead of replacing it (if there
is one) and sorted by time stamp and the most recent  events  are
retained.  If the second word is set to and the third word is set
to  the  history  file update will be serialized with other shell
sessions that would possibly like to merge history at exactly the
same time. (+) The format in which  the  builtin  command  prints
scheduled  events;  if  not given, is used.  The format sequences
are described above under note the variable meaning of  The  file
in  which  the  shell resides.  This is used in forking shells to
interpret files which have execute bits set, but  which  are  not
executable by the system.  (See the description of Initialized to
the  (system-dependent)  home of the shell.  The number of nested
shells.  Reset to 1 in login shells.  See also  The  exit  status
from the last command or backquote expansion, or any command in a
pipeline  is  propagated  to (This is also the default behavior.)
This default does not match what POSIX mandates  (to  return  the
status  of  the  last command only). To match the POSIX behavior,
you need to unset If the variable is unset, the exit status of  a
pipeline  is  determined  only  from  the  last  command  in  the
pipeline, and the exit status of a backquote expansion is  propa‐
gated  to  If a command terminated abnormally, then 0200 is added
to the status.  Builtin commands which fail  return  exit  status
all  other  builtin  commands return status Can be set to several
different values to control symbolic link resolution: If  set  to
whenever  the current directory changes to a directory containing
a symbolic link, it is expanded to the real name of the directory
to which the link points.  This does not work for the user's home
directory; this is a bug.  If set to the shell tries to construct
a current directory relative to the current directory before  the
link  was  crossed.   This means that through a symbolic link and
then returns one to the original directory.   This  affects  only
builtin  commands  and  filename completion.  If set to the shell
tries to fix symbolic links by actually expanding arguments which
look like  path  names.   This  affects  any  command,  not  just
builtins.   Unfortunately,  this does not work for hard-to-recog‐
nize filenames, such as those embedded in command  options.   Ex‐
pansion  may be prevented by quoting.  While this setting is usu‐
ally the most convenient, it is sometimes  misleading  and  some‐
times  confusing  when  it  fails  to recognize an argument which
should be expanded.  A compromise is to use and  use  the  editor
command  (bound  by default to when necessary.  Some examples are
in order.  First, let's set up some play directories: > cd /tmp >
mkdir from from/src to > ln -s from/src to/dst Here's the  behav‐
ior  with unset, > cd /tmp/to/dst; echo $cwd /tmp/to/dst > cd ..;
echo $cwd  /tmp/from  Here's  the  behavior  with  set  to  >  cd
/tmp/to/dst; echo $cwd /tmp/from/src > cd ..; echo $cwd /tmp/from
Here's  the  behavior  with  set  to  > cd /tmp/to/dst; echo $cwd
/tmp/to/dst > cd ..; echo $cwd /tmp/to Here's the  behavior  with
set to > cd /tmp/to/dst; echo $cwd /tmp/to/dst > cd ..; echo $cwd
/tmp/to  >  cd /tmp/to/dst; echo $cwd /tmp/to/dst > cd ".."; echo
$cwd /tmp/from > /bin/echo ..  /tmp/to > /bin/echo ".."  ..  Note
that expansion: Works just like for builtins like Is prevented by
quoting.  Happens before filenames are passed to non-builtin com‐
mands.  The version number of the shell in the  format  where  is
the  major  release  number,  the current version, and the patch‐
level.  The terminal type.  Usually set in as described under  If
set  to  a  number, then the builtin executes automatically after
each command which takes more than that  many  CPU  seconds.   If
there  is  a  second  word, it is used as a format string for the
output of the builtin.  (u) The following sequences may  be  used
in  the format string: The time the process spent in user mode in
cpu seconds.  The time the process spent in kernel  mode  in  cpu
seconds.  The elapsed (wall clock) time in seconds.  The CPU per‐
centage  computed as (%U + %S) / %E.  Number of times the process
was swapped.  The average amount in (shared) text space  used  in
Kbytes.   The  average amount in (unshared) data/stack space used
in Kbytes.  The total space used (%X + %D) in Kbytes.  The  maxi‐
mum  memory  the  process  had in use at any time in Kbytes.  The
number of major page faults  (page  needed  to  be  brought  from
disk).  The number of minor page faults.  The number of input op‐
erations.  The number of output operations.  The number of socket
messages received.  The number of socket messages sent.  The num‐
ber  of  signals  received.   The  number  of  voluntary  context
switches (waits).  The number of  involuntary  context  switches.
Only  the  first  four sequences are supported on systems without
BSD resource limit functions.  The default  time  format  is  for
systems  that  support  resource  usage reporting and for systems
that do not.  Under Sequent's DYNIX/ptx, and are  not  available,
but  the following additional sequences are: The number of system
calls performed.  The number of pages which  are  zero-filled  on
demand.   The  number  of times a process's resident set size was
increased by the kernel.  The number of times a  process's  resi‐
dent  set  size  was decreased by the kernel.  The number of read
system calls performed.  The number of write  system  calls  per‐
formed.   The  number of reads from raw disk devices.  The number
of writes to raw disk devices.  and the default  time  format  is
Note  that  the  CPU percentage can be higher than 100% on multi-
processors.  The period, in minutes, between  executions  of  the
special  alias.  The name of the tty, or empty if not attached to
one.  The user's real user ID.  The user's login name.   If  set,
causes  the  words  of  each command to be printed, after history
substitution (if any).  Set by the command line option.  The ver‐
sion ID stamp.  It contains the shell's version number (see  ori‐
gin,  release date, vendor, operating system and machine (see and
and a comma-separated list of options which were set  at  compile
time.   Options  which are set by default in the distribution are
noted.  Supported options include: The shell is eight bit  clean;
default.   The shell is not eight bit clean.  The shell is multi-
byte encoding clean (like UTF-8).  The system's NLS is used;  de‐
fault  for systems with NLS.  Login shells execute before instead
of after and before instead of after and is put last in for secu‐
rity; default.  is omitted from for security.  -style editing  is
the default rather than -style.  Login shells drop DTR when exit‐
ing.   is  a synonym for and is an alternate name for is enabled;
default.  Kanji is used if appropriate according to  locale  set‐
tings,  unless  the shell variable is set.  The system's is used.
The convention is emulated when  executing  shell  scripts.   The
builtin  is available.  The shell attempts to set the environment
variable.  The shell verifies your  password  with  the  kerberos
server  if local authentication fails.  The shell variable or the
environment variable override your local username if set.  An ad‐
ministrator may enter additional strings to indicate  differences
in  the local version.  If unset, various key bindings change be‐
havior to be more -style: word boundaries are determined by  ver‐
sus other characters.  If set, various key bindings change behav‐
ior  to  be more -style: word boundaries are determined by versus
whitespace versus other characters; cursor behavior depends  upon
current  vi  mode (command, delete, insert, replace).  This vari‐
able is unset by and set by may be explicitly set or unset by the
user after those operations if required.  If set, a screen  flash
is  used  rather  than  the  audible  bell.   See  also A list of
user/terminal pairs to watch for logins and logouts.   If  either
the user is all terminals are watched for the given user and vice
versa.  Setting to watches all users and terminals.  For example,
set watch = (george ttyd1 any console $user any) reports activity
of  the  user on any user on the console, and oneself (or a tres‐
passer) on any terminal.  Logins and logouts are checked every 10
minutes by default, but the first word of can be set to a  number
to  check every so many minutes.  For example, set watch = (1 any
any) reports any login/logout once every minute.  For  the  impa‐
tient,  the  builtin  command triggers a report at any time.  All
current logins are reported (as with the builtin) when  is  first
set.   The  shell  variable  controls the format of reports.  The
format string for messages.  The following sequences are replaced
by the given information: The name of the user who logged in/out.
The observed action, i.e., or The terminal  (tty)  on  which  the
user  logged in/out.  The full hostname of the remote host, or if
the login/logout was from the local host.  The  hostname  of  the
remote  host up to the first The full name is printed if it is an
IP address or an X Window System display.  and are  available  on
only  systems  that  store the remote hostname in or If unset, is
used, or on systems which don't store  the  remote  hostname.   A
list  of  non-alphanumeric  characters to be considered part of a
word by the etc., editor commands.  If unset, the  default  value
is  determined  based on the state of if is unset, is used as the
default; if is set, is used as the default.   Equivalent  to  the
shell variable.  Color sequences for are normally disabled if the
output  is not directed to a terminal.  This can be overridden by
setting this variable, which also changes the  invocation  of  to
use  instead  of Note that must be set for this environment vari‐
able to be effective; by itself does not enable color Set  by  to
the  current command line when invoking programs for the mode See
in The number of columns in the terminal.  See Used by  X  Window
System  (see If set, the shell does not set The pathname to a de‐
fault editor.  Used by the editor command if the the shell  vari‐
able is unset.  See also the environment variable.  Equivalent to
the  shell variable.  Equivalent to the shell variable.  Initial‐
ized to the name of the machine on which the shell is running, as
determined by the library call.  Initialized to the type  of  ma‐
chine  on  which  the  shell is running, as determined at compile
time.  This variable is obsolete and will be removed in a  future
version.  A list of directories in which the editor command looks
for  command  documentation.  Gives the preferred character envi‐
ronment.  See If set, only ctype character handling  is  changed.
See The number of lines in the terminal.  See One of two environ‐
ment  variables  that  may  be used to define the per-file colors
used by (along with This variable is used by some BSD versions of
On startup, takes priority over If both or are the most recent is
used.  If is while is still then is parsed again (with any  warn‐
ings  suppressed) to reapply its settings.  This variable is a 22
character string containing a concatenation of 11  pairs  of  the
format where is the foreground color and is the background color.
If  fewer than 11 pairs are provided, default colors are used for
the remaining entries.  If more than 11 pairs are  provided,  the
extra values are ignored.  The order of the color attribute pairs
to  the equivalent variable, the file type, and default color, is
as follows: The color code designators  are  as  follows:  Black.
Red.   Green.   Yellow (or brown).  Blue.  Magenta.  Cyan.  Light
grey.  Bold black, usually shows up  as  dark  grey.   Bold  red.
Bold  green.  Bold yellow.  Bold blue.  Bold magenta.  Bold cyan.
Bold light grey; looks like bright white.  Default foreground  or
background.   Note  that the above are standard ANSI colors.  The
actual display may differ depending on the color capabilities  of
the  terminal  in  use.   The default colors are as per the color
variables in and are not the same default colors as those used by
some BSD versions of One of two environment variables that may be
used to define the per-file colors used by (along with This vari‐
able is used by the GNU coreutils version of and may be setup  by
On startup, takes priority over If both or are the most recent is
used.   If is while is still then is parsed again (with any warn‐
ings suppressed) to reapply its settings.   The  format  of  this
variable is reminiscent of the file format; a list of expressions
of  the  form or The first form where is a two-character variable
name, supports the following variables, their associated  default
ISO  6429 color code or escape sequences, and file type: You need
to include only the variables you want to  change  from  the  de‐
fault.   The second form colorizes file names based on extension.
For example, using ISO 6429 codes, to color all C-language source
files blue you would specify This would color all files ending in
in blue foreground (34) color.  Control characters can be written
either in C-style-escaped notation, or in  stty-like  ^-notation.
The  C-style notation adds for Escape, for a normal space charac‐
ter, and for Delete.  In addition, the escape  character  can  be
used  to override the default interpretation of and Each filename
will be output to the terminal as If the code is  undefined,  the
sequence will be used instead.  This is generally more convenient
to use, but less general.  The left code right code and end codes
are provided so you don't have to type common parts over and over
again and to support weird terminals; you will generally not need
to  change them at all unless your terminal does not use ISO 6429
color codes but a different system.  If your  terminal  uses  ISO
6429  color  codes, you can compose the type codes (i.e., all ex‐
cept the and codes) from numerical ISO 6429 color codes separated
by For example, is bright green  foreground  with  default  back‐
ground.  The most common ISO 6429 color codes are: To restore de‐
fault color.  Bold / brighter colors.  Underlined text.  Flashing
text.   Black  foreground.   Red  foreground.   Green foreground.
Yellow (or brown) foreground.  Blue  foreground.   Magenta  fore‐
ground.   Cyan  foreground.   White  (or gray) foreground.  Black
background.   Red  background.   Green  background.   Yellow  (or
brown)  background.   Blue background.  Magenta background.  Cyan
background.  White (or gray) background.  Not all ISO 6429  color
codes  will work on all systems or display devices.  A few termi‐
nal programs do not recognize the default end code properly.   If
all  text  gets  colorized  after you do a directory listing, try
changing the and codes from 0 to the  numerical  codes  for  your
standard  foreground  and  background colors.  For symbolic links
the keyword can be set to which makes the file color the same  as
the  color  of the link target.  The machine type (microprocessor
class or machine model), as determined at compile time.  If  set,
printable characters are not rebound to See The operating system,
as determined at compile time.  A list of directories in which to
look for executables.  Equivalent to the shell variable, but in a
different format.  Equivalent to the shell variable, but not syn‐
chronized  to  it; updated only after an actual directory change.
The host from which the user has logged in remotely, if  this  is
the  case and the shell is able to determine it.  Set only if the
shell was so compiled; see the shell variable.  Equivalent to the
shell variable.   The  current  system  type.   (Domain/OS  only)
Equivalent  to  the  shell  variable.   The  terminal  capability
string.  See Equivalent to the shell variable.   The  vendor,  as
determined  at  compile  time.   The  pathname to a default full-
screen editor.  Used by the editor command if the the shell vari‐
able is unset.  See also the environment variable.  Read first by
every shell.  ConvexOS, Stellix and Intel  use  NeXTs  use  A/UX,
AMIX,  Cray  and IRIX have no equivalent in but read this file in
anyway.  Solaris 2.x does not have it either, but reads (+)  Read
by  login  shells after ConvexOS, Stellix and Intel use NeXTs use
Solaris 2.x uses A/UX, AMIX, Cray and  IRIX  use  Read  by  every
shell  after  or its equivalent.  Read by every shell, if doesn't
exist, after or its equivalent.  This manual uses to mean or,  if
is  not found, Read by login shells after if is set, but see also
Read by login shells after or The shell may be compiled  to  read
before  instead of after and see the shell variable.  Read by lo‐
gin shells after if is set, but see also Read by login shells  at
logout.   ConvexOS,  Stellix  and Intel use NeXTs use A/UX, AMIX,
Cray and IRIX have no equivalent in but read this file in anyway.
Solaris 2.x does not have it either, but reads (+) Read by  login
shells  at  logout  after  or  its equivalent.  Used to interpret
shell scripts not starting with a Temporary file  for  Source  of
home  directories  for substitutions.  The order in which startup
files are read may differ if the shell was so compiled;  see  and
the  shell  variable.   This manual describes as a single entity,
but experienced users will want to pay special  attention  to  's
new  features.   A  command-line editor, which supports -style or
-style key bindings.  See and Programmable, interactive word com‐
pletion and listing.  See and the and builtin commands.  of file‐
names, commands and variables.  which perform other useful  func‐
tions  in  the  middle of typed commands, including documentation
lookup quick editor restarting and command resolution An enhanced
history mechanism.  Events in the history list are  time-stamped.
See also the command and its associated shell variables, the pre‐
viously  undocumented event specifier and new modifiers under the
and editor commands and the shell variable.   Enhanced  directory
parsing  and  directory stack handling.  See the and commands and
their associated shell variables,  the  description  of  the  and
shell  variables  and the and editor commands.  Negation in glob-
patterns.  See New and a builtin which uses them.  A  variety  of
including scheduled events, special aliases, automatic logout and
terminal  locking, command timing and watching for logins and lo‐
gouts.  Support for the Native Language System  (see  OS  variant
features  (see  and the shell variable) and system-dependent file
locations (see Extensive terminal-management  capabilities.   See
New builtin commands including and New variables that make useful
information  easily  available  to  the shell.  See the and shell
variables and the and environment variables.  A  new  syntax  for
including  useful  information in the prompt string (see and spe‐
cial prompts for loops and spelling correction (see and Read-only
variables.  See In 1964, DEC produced the PDP-6.  The PDP-10  was
a later re-implementation.  It was re-christened the DECsystem-10
in  1970  or  so when DEC brought out the second model, the KI10.
TENEX was created at Bolt, Beranek & Newman (a Cambridge,  Massa‐
chusetts  think  tank)  in  1972 as an experiment in demand-paged
virtual memory operating systems.  They built a new pager for the
DEC PDP-10 and created the OS to go with it.   It  was  extremely
successful  in academia.  In 1975, DEC brought out a new model of
the PDP-10, the KL10; they intended to have  only  a  version  of
TENEX,  which  they had licensed from BBN, for the new box.  They
called their version  TOPS-20  (their  capitalization  is  trade‐
marked).   A  lot  of  TOPS-10  users  (`The OPerating System for
PDP-10') objected; thus DEC found themselves supporting  two  in‐
compatible systems on the same hardware--but then there were 6 on
the PDP-11!  TENEX, and TOPS-20 to version 3, had command comple‐
tion  via  a  user-code-level  subroutine  library called ULTCMD.
With version 3, DEC moved all that capability and more  into  the
monitor  (`kernel'  for  you  Unix types), accessed by the COMND%
JSYS (`Jump to SYStem' instruction, the supervisor call mechanism
[are my IBM roots also showing?]).  The creator of tcsh  was  im‐
pressed  by this feature and several others of TENEX and TOPS-20,
and created a version of csh which  mimicked  them.   The  system
limits argument lists to ARG_MAX characters.  The number of argu‐
ments  to  a command which involves filename expansion is limited
to 1/6th the number of characters allowed in  an  argument  list.
Command  substitutions may substitute no more characters than are
allowed in an argument list.  To detect looping,  the  shell  re‐
stricts the number of substitutions on a single line to 20.

See for descriptions of the following attributes:

box;  cbp-1  |  cbp-1  l | l .  ATTRIBUTE TYPE  ATTRIBUTE VALUE =
Availability    shell/tcsh = Stability       Volatile This manual
documents tcsh 6.24.13 (Astron) 2024-06-12.
Original author of IIASA, Laxenburg, Austria.
Job control and directory stack features.  HP Labs, 1981.
File name completion.  Fairchild, 1983.
Command  name  recognition/completion.   Ohio  State  CIS  Dept.,
1983-1993.
Command  line editor, prompt routines, new glob syntax and numer‐
ous fixes and speedups.  CCI, 1983-4.
Special aliases, directory stack extraction  stuff,  login/logout
watch,  scheduled  events, and the idea of the new prompt format.
University of Toronto, 1984.
and builtins and numerous bug fixes, modifications and  speedups.
Caltech.
Fast storage allocator routines.  TRW, 1987.
Incorporated 4.3BSD into Cornell U. EE Dept., 1987-94.
Ports  to  HPUX,  SVR2  and  SVR3,  a  SysV  version  of getwd.c,
SHORT_STRINGS support and a new version of sh.glob.c.   BBN,  and
OSU, 1988.
A/UX port.  NNSC, 1988.
Kuck and Associates, Inc., 1988.
mode cleanup.  Rensselaer Polytechnic Institute, 1989.
and ambiguous completion listing.  DEC, 1989.
Newlines in the prompt.  BBN, 1989.
Purdue Physics, 1989.
Magic space bar history expansion.  Intel, 1989.
fixes and additions.  Dept. of Computer Science, Keio University,
1989.
Automatic spelling correction and Ellemtel, Sweden, 1990-.
Various bugfixes, improvements and manual updates.  Sun Sweden.
and
Interrupt handling fixes.  Digital Equipment Corp.
Extended key support.  Convex, 1990.
Convex  support, lots of bug fixes, save and restore of directory
stack.  Apple, 1990.
A/UX 2.0 (re)port.  LTH Sweden, 1990.
NLS support and simulated NLS support for non NLS  sites,  fixes.
SICS Sweden, 1990.
Mach support, 8-bit printing.  Sanyo Icon, 1990.
POSIX termio support, SysV limit fixes.  Sequent, 1990-91.
Vi  mode  fixes, expand-line, window change fixes, Symmetry port.
Institut de recherche d'Hydro-Quebec, 1991.
beeping options, modified the history search to  search  for  the
whole  string  from the beginning of the line to the cursor.  Mo‐
torola, 1991.
Minix port.  Sydney U. Australia, Physics Dept., 1991.
SVR4 job control fixes.  1991-.
Various  portability  and  other  fixes.   Added  (dollar-single-
quotes).  Interactive Systems Corp., 1991.
Extended fixes and delete command.  MIT, 1991.
ANSIfication fixes, new exec hashing code, imake fixes, 1991-.
Enhanced  directory  printing  in Added and improvements.  Manual
page improvements.  sterling@netcom.com, 1991-1995.
ETA and Pyramid port, Makefile and lint fixes, addition, and var‐
ious other portability changes and bug fixes.  1992.
and 1992.
Coherent port.  Mullard Space Science Lab U.K., 1992.
VMS-POSIX port.  IBM Corp., 1992.
Walking process group fixes, bug fixes, POSIX file  tests,  POSIX
SIGHUP.  Cray Computer Corp., 1992.
CSOS port.  Rutgers University, 1992.
Tek,  m88k,  Titan  and Masscomp ports and fixes.  Added autoconf
support.  Cornell University, 1992.
OS/2 port.  liljeber@kruuna.Helsinki.FI, 1992.
Linux port.  NASA Langley Research Center Operations, 1993.
Read-only variables.  Yale University, 1993-4.
New man page and tcsh.man2html.  Stanford University, 1993.
AFS and HESIOD patches.  Silicon Graphics Inc., 1996.
Added implicit cd.  1997.
Ported to Siemens Nixdorf EBCDIC machine.  Microsoft, 1997.
Ported to WIN32 (Windows/95 and Windows/NT); wrote all the  miss‐
ing  library  and  message  catalog code to interface to Windows.
1998.
Color ls additions.  Bryan Dunlap, Clayton  Elwell,  Karl  Klein‐
paste,  Bob Manson, Steve Romig, Diana Smetters, Bob Sutterfield,
Mark Verber, Elizabeth Zwicky and all the other  people  at  Ohio
State  for  suggestions  and  encouragement All the people on the
net, for putting up with, reporting bugs in, and  suggesting  new
additions  to each and every version Richard M. Alderson III, for
writing the section It is no longer  possible  for  variables  to
have  a  '-' or a '=' within the name. Any variables of this form
will generate a 'setenv: Syntax error'  error  message.   When  a
suspended command is restarted, the shell prints the directory it
started in if this is different from the current directory.  This
can  be  misleading (i.e., wrong) as the job may have changed di‐
rectories internally.  Shell  builtin  functions  are  not  stop‐
pable/restartable.   Command  sequences  of the form are also not
handled gracefully when stopping is attempted.   If  you  suspend
the  shell  will  then immediately execute This is especially no‐
ticeable if this expansion results from an It suffices  to  place
the  sequence  of commands in 's to force it to a subshell, i.e.,
Control over tty output after processes are started is primitive;
perhaps this will inspire someone to work on a good virtual  ter‐
minal  interface.   In a virtual terminal interface much more in‐
teresting things could be done with output control.   Alias  sub‐
stitution  is  most  often used to clumsily simulate shell proce‐
dures; shell procedures should be provided rather  than  aliases.
Control  structures should be parsed rather than being recognized
as built-in commands.  This would allow control  commands  to  be
placed  anywhere,  to  be  combined  with and to be used with and
metasyntax.  doesn't ignore here documents when looking  for  its
It  should be possible to use the modifiers on the output of com‐
mand substitutions.  The screen update for lines longer than  the
screen  width is very poor if the terminal cannot move the cursor
up (i.e., terminal type and don't need to  be  environment  vari‐
ables.  Glob-patterns which do not use or or which use or are not
negated  correctly.  The single-command form of does output redi‐
rection even if the expression is false and the  command  is  not
executed.   includes  file identification characters when sorting
filenames and does not handle  control  characters  in  filenames
well.   It  cannot be interrupted.  Command substitution supports
multiple commands and conditions, but not cycles or  backward  s.
Report  bugs at preferably with fixes.  If you want to help main‐
tain and test tcsh, add yourself to the mailing list in



Source code for open source software components in Oracle Solaris
can be found  at  https://www.oracle.com/downloads/opensource/so‐
laris-source-code-downloads.html.

This software was built from source available at:
https://github.com/oracle/solaris-userland

The original community source was downloaded from:
https://astron.com/pub/tcsh/tcsh-6.24.13.tar.gz

Further  information about this software can be found on the open
source community website at http://www.tcsh.org/.

























맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3