unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (HP-UX-11.11)
Page:
Section:
Apropos / Subsearch:
optional field



 ksh(1)                                                               ksh(1)




 NAME
      ksh, rksh - shell, the standard/restricted command programming
      language

 SYNOPSIS
      ksh [-aefhikmnoprstuvx] [+aefhikmnoprstuvx] [-o option] ...  [+o
      option] ...  [-c string] [arg ...]

      rksh [-aefhikmnoprstuvx] [+aefhikmnoprstuvx] [-o option] ...  [+o
      option] ...  [-c string] [arg ...]

 DESCRIPTION
      ksh is a command programming language that executes commands read from
      a terminal or a file.  rksh is a restricted version of the command
      interpreter ksh, used to set up login names and execution environments
      whose capabilities are more controlled than those of the standard
      shell.  See Invoking ksh and Special Commands sections later in this
      entry for details about command line options and arguments,
      particularly the set command.

    Definitions
      metacharacter  One of the following characters:

                     ;   &&amp&amp&amp;   (   )   |   <&lt&lt&lt;   >&gt&gt&gt;   new-line   space   tab

      blank          A tab or space character.

      identifier     A sequence of letters, digits, or underscores starting
                     with a letter or underscore.  Identifiers are used as
                     names for functions and named parameters.

      word           A sequence of characters separated by one or more non-
                     quoted metacharacters .

      command        A sequence of characters in the syntax of the shell
                     language.  The shell reads each command and carries out
                     the desired action, either directly or by invoking
                     separate utilities.

      special command
                     A command that is carried out by the shell without
                     creating a separate process.  Often called ``built-in
                     commands''.  Except for documented side effects, most
                     special commands can be implemented as separate
                     utilities.

      #              The # character is interpreted as the beginning of a
                     comment.  See Quoting below.

    Commands
      A simple-command is a sequence of blank-separated words that can be



 Hewlett-Packard Company            - 1 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      preceded by a parameter assignment list.  (See Environment below).
      The first word specifies the name of the command to be executed.
      Except as specified below, the remaining words are passed as arguments
      to the invoked command.  The command name is passed as argument 0 (see
      exec(2)).  The value of a simple-command is its exit status if it
      terminates normally, or (octal) 200+status if it terminates abnormally
      (see signal(5) for a list of status values).

      A pipeline is a sequence of one or more commands separated by |.  The
      standard output of each command except the last is connected by a pipe
      (see pipe(2)) to the standard input of the next command.  Each command
      is run as a separate process; the shell waits for the last command to
      terminate.  The exit status of a pipeline is the exit status of the
      last command in the pipeline.

      A list is a sequence of one or more pipelines separated by ;, &&amp&amp&amp;, &&amp&amp&amp;&&amp&amp&amp;,
      or ||, and optionally terminated by ;, &&amp&amp&amp;, or |&&amp&amp&amp;.  Of these five
      symbols, ;, &&amp&amp&amp;, and |&&amp&amp&amp; have equal precedence.  &&amp&amp&amp;&&amp&amp&amp; and || have a higher
      but also equal precedence.  A semicolon (;) causes sequential
      execution of the preceding pipeline; an ampersand (&&amp&amp&amp;) causes
      asynchronous execution of the preceding pipeline (that is, the shell
      does not wait for that pipeline to finish).  The symbol |&&amp&amp&amp; causes
      asynchronous execution of the preceding command or pipeline with a
      two-way pipe established to the parent shell (known as a co-process).
      The standard input and output of the spawned command can be written to
      and read from by the parent shell using the -p option of the special
      commands read and print described later.  The symbol &&amp&amp&amp;&&amp&amp&amp; (||) causes
      the list following it to be executed only if the preceding pipeline
      returns a zero (non-zero) value.  An arbitrary number of new-lines can
      appear in a list, instead of semicolons, to delimit commands.

      A command is either a simple-command or one of the following.  Unless
      otherwise stated, the value returned by a command is that of the last
      simple-command executed in the command.

      for identifier [in word ...] do list done
                     Each time for is executed, identifier is set to the
                     next word taken from the in word list.  If in word ...
                     is omitted, for executes the do list once for each
                     positional parameter set (see Parameter Substitution
                     below).  Execution ends when there are no more words in
                     the list.

      select identifier [in word...] do list done
                     A select command prints on standard error (file
                     descriptor 2), the set of words, each preceded by a
                     number.  If in word ...  is omitted, the positional
                     parameters are used instead (see Parameter Substitution
                     below).  The PS3 prompt is printed and a line is read
                     from the standard input.  If this line starts with the
                     number of one of the listed words, the value of the



 Hewlett-Packard Company            - 2 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                     parameter identifier is set to the word corresponding
                     to this number.  If this line is empty, the selection
                     list is printed again.  Otherwise the value of the
                     parameter identifier is set to null.  The contents of
                     the line read from standard input is saved in the
                     parameter REPLY.  The list is executed for each
                     selection until a break or end-of-file (eof) is
                     encountered.

      case word in [[ (] pattern [ | pattern] ... ) list ;; ] ... esac
                     A case command executes the list associated with the
                     first pattern that matches word.  The form of the
                     patterns is identical to that used for file name
                     generation (see File Name Generation below).

      if list then list [ elif list then list] ... [ else list] fi
                     The list following if is executed and, if it returns a
                     zero exit status, the list following the first then is
                     executed.  Otherwise, the list following elif is
                     executed and, if its value is zero, the list following
                     the next then is executed.  Failing that, the else list
                     is executed.  If no else list or then list is executed,
                     if returns a zero exit status.

      while list do list done
      until list do list done
                     A while command repeatedly executes the while list, and
                     if the exit status of the last command in the list is
                     zero, executes the do list; otherwise the loop
                     terminates.  If no commands in the do list are
                     executed, while returns a zero exit status; until can
                     be used in place of while to negate the loop
                     termination test.

      (list)         Execute list in a separate environment.  If two
                     adjacent open parentheses are needed for nesting, a
                     space must be inserted to avoid arithmetic evaluation
                     as described below.

      { list;}       Execute list, but not in a separate environment.  Note
                     that { is a keyword and requires a trailing blank to be
                     recognized.

      [[ expression ]]
                     Evaluates expression and returns a zero exit status
                     when expression is true.  See Conditional Expressions
                     below, for a description of expression.  Note that [[
                     and ]] are keywords and require blanks between them and
                     expression.





 Hewlett-Packard Company            - 3 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      function identifier {list;}
      identifier () {list;}
                     Define a function referred to by identifier.  The body
                     of the function is the list of commands between { and }
                     (see Functions below).

      time pipeline  pipeline is executed and the elapsed time, user time,
                     and system time are printed on standard error. Note
                     that the time keyword can appear anywhere in the
                     pipeline to time the entire pipeline. To time a
                     particular command in a pipeline, see time(1).

      The following keywords are recognized only as the first word of a
      command and when not quoted:

           if then else elif fi case esac for while
           until do done { } function select time [[ ]]

    Comments
      A word beginning with # causes that word and all subsequent characters
      up to a new-line to be ignored.

    Aliasing
      The first word of each command is replaced by the text of an alias, if
      an alias for this word has been defined.  An alias name consists of
      any number of characters excluding metacharacters, quoting characters,
      file expansion characters, parameter and command substitution
      characters, and =.  The replacement string can contain any valid shell
      script, including the metacharacters listed above.  The first word of
      each command in the replaced text, other than any that are in the
      process of being replaced, is tested for additional aliases.  If the
      last character of the alias value is a blank, the word following the
      alias is also checked for alias substitution.  Aliases can be used to
      redefine special built-in commands, but cannot be used to redefine the
      keywords listed above.  Aliases can be created, listed, and exported
      with the alias command and can be removed with the unalias command.
      Exported aliases remain in effect for subshells but must be
      reinitialized for separate invocations of the shell (see Invoking ksh
      below).

      Aliasing is performed when scripts are read, not while they are
      executed.  Therefore, for it to take effect, alias must be executed
      before the command referring to the alias is read.

      Aliases are frequently used as a shorthand for full path names.  An
      option to the aliasing facility allows the value of the alias to be
      automatically set to the full path name of the corresponding command.
      These aliases are called tracked aliases.  The value of a tracked
      alias is defined the first time the identifier is read and becomes
      undefined each time the PATH variable is reset.  These aliases remain
      tracked so that the next reference redefines the value.  Several



 Hewlett-Packard Company            - 4 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      tracked aliases are compiled into the shell.  The -h option of the set
      command converts each command name that is an identifier into a
      tracked alias.

      The following exported aliases are compiled into the shell but can be
      unset or redefined:

           autoload='typeset -fu'
           false='let 0'
           functions='typeset -f'
           hash='alias -t -'
           history='fc -l'
           integer='typeset -i'
           nohup='nohup '
           r='fc -e -'
           stop='kill -STOP'
           suspend='kill -STOP $$'
           true=':'
           type='whence -v'

    Tilde Substitution
      After alias substitution is performed, each word is checked to see if
      it begins with an unquoted ~.  If it does, the word up to a / is
      checked to see if it matches a user name in the /etc/passwd file.  If
      a match is found, the ~ and the matched login name are replaced by the
      login directory of the matched user.  This is called a tilde
      substitution.  If no match is found, the original text is left
      unchanged.  A ~, alone or before a /, is replaced by the value of the
      HOME parameter.  A ~ followed by a + or - is replaced by the value of
      the parameter PWD and OLDPWD, respectively.  In addition, tilde
      substitution is attempted when the value of a parameter assignment
      begins with a ~.

    Command Substitution
      The standard output from a command enclosed in parenthesis preceded by
      a dollar sign ($(command)) or a pair of back single quotes (accent
      grave) (`command`) can be used as part or all of a word; trailing
      new-lines are removed.  In the second (archaic) form, the string
      between the quotes is processed for special quoting characters before
      the command is executed (see Quoting below).  The command substitution
      $(cat file) can be replaced by the equivalent but faster $(<&lt&lt&lt;file).
      Command substitution of most special commands (built-ins) that do not
      perform I/O redirection are carried out without creating a separate
      process.  However, command substitution of a function creates a
      separate process to execute the function and all commands (built-in or
      otherwise) in that function.

      An arithmetic expression enclosed in double parenthesis preceded by a
      dollar sign ($((expression))) is replaced by the value of the
      arithmetic expression within the double parenthesis (see Arithmetic
      Evaluation below for a description of arithmetic expressions).



 Hewlett-Packard Company            - 5 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




    Parameter Substitution
      A parameter is an identifier, one or more digits, or any of the
      characters *, @, #, ?, -, $, and !.  A named parameter (a parameter
      denoted by an identifier) has a value and zero or more attributes.
      Named parameters can be assigned values and attributes by using the
      typeset special command.  Attributes supported by ksh are described
      later with the typeset special command.  Exported parameters pass
      values and attributes to the environment.

      The shell supports a limited one-dimensional array facility.  An
      element of an array parameter is referenced by a subscript.  A
      subscript is denoted by a [ followed by an arithmetic expression (see
      Arithmetic Evaluation below) followed by a ].  To assign values to an
      array, use set -A name value ....  The value of all subscripts must be
      in the range of 0 through 1023.  Arrays need not be declared.  Any
      reference to a named parameter with a valid subscript is legal and an
      array is created if necessary.  Referencing an array without a
      subscript is equivalent to referencing the first element.

      The value of a named parameter can also be assigned by writing:

           name=value [name=value] ...

      If the -i integer attribute is set for name, the value is subject to
      arithmetic evaluation as described below.

      Positional parameters, parameters denoted by a number, can be assigned
      values with the set special command.  Parameter $0 is set from
      argument zero when the shell is invoked.

      The character $ is used to introduce substitutable parameters.

           ${parameter}        Substitute the value of the parameter, if
                               any.  Braces are required when parameter is
                               followed by a letter, digit, or underscore
                               that should not be interpreted as part of its
                               name or when a named parameter is
                               subscripted.  If parameter is one or more
                               digits, it is a positional parameter.  A
                               positional parameter of more than one digit
                               must be enclosed in braces.  If parameter is
                               * or @ all the positional parameters,
                               starting with $1, are substituted (separated
                               by a field separator character).  If an array
                               identifier with subscript * or @ is used, the
                               value for each element is substituted
                               (separated by a field separator character).
                               The shell reads all the characters from ${ to
                               the matching } as part of the same word even
                               if it contains braces or metacharacters.




 Hewlett-Packard Company            - 6 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




           ${#parameter}       If parameter is * or @, the number of
                               positional parameters is substituted.
                               Otherwise, the length of the value of the
                               parameter is substituted.

           ${#identifier[*]}   Substitute the number of elements in the
                               array identifier.

           ${parameter:-word}  If parameter is set and is non-null,
                               substitute its value; otherwise substitute
                               word.

           ${parameter:=word}  If parameter is not set or is null, set it to
                               word; then substitute the value of the
                               parameter.  Positional parameters cannot be
                               assigned in this way.

           ${parameter:?word}  If parameter is set and is non-null,
                               substitute its value; otherwise, print word
                               and exit from the shell.  If word is omitted,
                               a standard message is printed.

           ${parameter:+word}  If parameter is set and is non-null,
                               substitute word; otherwise substitute
                               nothing.

           ${parameter#pattern}
           ${parameter##pattern}
                               If the shell pattern matches the beginning of
                               the value of parameter, the value of this
                               substitution is the value of the parameter
                               with the matched portion deleted; otherwise
                               the value of this parameter substituted.  In
                               the former case, the smallest matching
                               pattern is deleted; in the latter case, the
                               largest matching pattern is deleted.

           ${parameter%pattern}
           ${parameter%%pattern}
                               If the shell pattern matches the end of the
                               value of parameter, the value of parameter
                               with the matched part is deleted; otherwise
                               substitute the value of parameter.  In the
                               former, the smallest matching pattern is
                               deleted; in the latter, the largest matching
                               pattern is deleted.

           In the above, word is not evaluated unless it is used as the
           substituted string.  Thus, in the following example, pwd is
           executed only if d is not set or is null:




 Hewlett-Packard Company            - 7 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                echo ${d:-$(pwd)}

           If the colon (:) is omitted from the above expressions, the shell
           only checks to determine whether or not parameter is set.

      The following parameters are set automatically by the shell:

           #              The number of positional parameters in decimal.
           -              Options supplied to the shell on invocation or by
                          the set command.
           ?              The decimal value returned by the last executed
                          command.
           $              The process number of this shell.
           _              Initially, the value of _ is an absolute pathname
                          of the shell or script being executed as passed in
                          the environment.  Subsequently it is assigned the
                          last argument of the previous command.  This
                          parameter is not set for commands which are
                          asynchronous.  This parameter is also used to hold
                          the name of the matching MAIL file when checking
                          for mail.
           !              The process number of the last background command
                          invoked.
           COLUMNS        If this variable is set, its value is used to
                          define the width of the edit window for the shell
                          edit modes and for printing select lists.  In a
                          windowed environment, if the shell detects that
                          the window size has changed, the shell updates the
                          value of COLUMNS.
           ERRNO          The value of errno as set by the most recently
                          failed system call.  This value is system
                          dependent and is intended for debugging purposes.
           LINENO         The line number of the current line within the
                          script or function being executed.
           LINES          If this variable is set, the value is used to
                          determine the column length for printing select
                          lists.  select lists print vertically until about
                          two-thirds of LINES lines are filled.  In a
                          windowed environment, if the shell detects that
                          the window size has changed, the shell updates the
                          value of LINES.
           OLDPWD         The previous working directory set by the cd
                          command.
           OPTARG         The value of the last option argument processed by
                          the getopts special command.
           OPTIND         The index of the last option argument processed by
                          the getopts special command.
           PPID           The process number of the parent of the shell.
           PWD            The present working directory set by the cd
                          command.




 Hewlett-Packard Company            - 8 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




           RANDOM         Each time this parameter is evaluated, a random
                          integer, uniformly distributed between 0 and
                          32767, is generated.  The sequence of random
                          numbers can be initialized by assigning a numeric
                          value to RANDOM.
           REPLY          This parameter is set by the select statement and
                          by the read special command when no arguments are
                          supplied.
           SECONDS        Each time this parameter is referenced, the number
                          of seconds since shell invocation is returned.  If
                          this parameter is assigned a value, the value
                          returned upon reference is the value that was
                          assigned plus the number of seconds since the
                          assignment.

      The following parameters are used by the shell:

           CDPATH         The search path for the cd command.
           EDITOR         If the value of this variable ends in emacs,
                          gmacs, or vi and the VISUAL variable is not set,
                          the corresponding option is turned on (see set in
                          Special Commands below).
           ENV            If this parameter is set, parameter substitution
                          is performed on the value to generate the path
                          name of the script to be executed when the shell
                          is invoked (see Invoking ksh below).  This file is
                          typically used for alias and function definitions.
           FCEDIT         The default editor name for the fc command.
           FPATH          The search path for function definitions.  This
                          path is searched when a function with the -u
                          attribute is referenced and when a command is not
                          found.  If an executable file is found, then it is
                          read and executed in the current environment.
           IFS            Internal field separators, normally space, tab,
                          and new-line that are used to separate command
                          words resulting from command or parameter
                          substitution, and for separating words with the
                          special command read.  The first character of the
                          IFS parameter is used to separate arguments for
                          the "$*" substitution (see Quoting below).
           HISTFILE       If this parameter is set when the shell is
                          invoked, its value is the path name of the file
                          that is used to store the command history.  The
                          default value is $HOME/.sh_history.  If the user
                          has appropriate privileges and no HISTFILE is
                          given, then no history file is used (see Command
                          Re-entry below).
           HISTSIZE       If this parameter is set when the shell is
                          invoked, the number of previously entered commands
                          accessible to this shell will be greater than or
                          equal to this number.  The default is 128.



 Hewlett-Packard Company            - 9 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




           HOME           The default argument (home directory) for the cd
                          command.
           MAIL           If this parameter is set to the name of a mail
                          file and the MAILPATH parameter is not set, the
                          shell informs the user of arrival of mail in the
                          specified file.
           MAILCHECK      This variable specifies how often (in seconds) the
                          shell checks for changes in the modification time
                          of any of the files specified by the MAILPATH or
                          MAIL parameters.  The default value is 600
                          seconds.  When the time has elapsed the shell
                          checks before issuing the next prompt.
           MAILPATH       A list of file names separated by colons (:).  If
                          this parameter is set, the shell informs the user
                          of any modifications to the specified files that
                          have occurred within the last MAILCHECK seconds.
                          Each file name can be followed by a ? and a
                          message to be printed, in which case the message
                          undergoes parameter and command substitution with
                          the parameter $_ defined as the name of the
                          changed file.  The default message is you have
                          mail in $_.
           PATH           The search path for commands (see Execution
                          below).  The user cannot change PATH if executing
                          rksh (except in the .profile file).
           PS1            The value of this parameter is expanded for
                          parameter substitution, to define the primary
                          prompt string which, by default, is $ followed by
                          a space character.  The character ! in the primary
                          prompt string is replaced by the command number
                          (see Command Re-entry below).  To include a ! in
                          the prompt, use !!.
           PS2            Secondary prompt string, by default >&gt&gt&gt; followed by
                          a space character.
           PS3            Selection prompt string used within a select loop,
                          by default #? followed by a space character.
           PS4            The value of this variable is expanded for
                          parameter substitution and precedes each line of
                          an execution trace.  If PS4 is unset, the
                          execution trace prompt is + followed by a space
                          character.
           SHELL          The path name of the shell is kept in the
                          environment.  When invoked, the shell is
                          restricted if the value of this variable contains
                          an r in the basename.
           TMOUT          If set to a value greater than zero, the shell
                          terminates if a command is not entered within the
                          prescribed number of seconds after issuing the PS1
                          prompt.
           VISUAL         Invokes the corresponding option when the value of
                          this variable ends in emacs, gmacs, or vi (see set



 Hewlett-Packard Company           - 10 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                          in Special Commands below).

      The shell gives default values to PATH, PS1, PS2, MAILCHECK, TMOUT,
      and IFS.  HOME, SHELL, ENV, and MAIL are never set automatically by
      the shell (although HOME, SHELL, and MAIL are set by login(1)).

    Blank Interpretation
      After parameter and command substitution, the results of substitution
      are scanned for field separator characters (found in IFS), and split
      into distinct arguments where such characters are found.  ksh retains
      explicit null arguments ( or '') but removes implicit null arguments
      (those resulting from parameters that have no values).

    File Name Generation
      Following substitution, each command word is processed as a pattern
      for file name expansion unless the -f option has been set.  The form
      of the patterns is the Pattern Matching Notation defined by regexp(5).
      The word is replaced with sorted file names matching the pattern.  If
      no file name is found that matches the pattern, the word is left
      unchanged.

      In addition to the notation described in regexp(5), ksh recognizes
      composite patterns made up of one or more pattern lists separated from
      each other with a |.  Composite patterns can be formed with one or
      more of the following:

           ?(pattern-list)     Optionally matches any one of the given
                               patterns.

           *(pattern-list)     Matches zero or more occurrences of the given
                               patterns.

           +(pattern-list)     Matches one or more occurrences of the given
                               patterns.

           @(pattern-list)     Matches exactly one of the given patterns.

           !(pattern-list)     Matches anything, except one of the given
                               patterns.

    Quoting
      Each of the metacharacters listed above (See Definitions above) has a
      special meaning to the shell and causes termination of a word unless
      quoted.  A character can be quoted (i.e., made to stand for itself) by
      preceding it with a \.  The pair \new-line is ignored.  All characters
      enclosed between a pair of single quote marks (''), are quoted.  A
      single quote cannot appear within single quotes.  Inside double quote
      marks (""), parameter and command substitution occurs and \ quotes the
      characters \, `, ", and $.  $* and $@ have identical meanings when not
      quoted or when used as a parameter assignment value or as a file name.
      However, when used as a command argument, "$*" is equivalent to



 Hewlett-Packard Company           - 11 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      "$1d$2d...", where d is the first character of the IFS parameter,
      whereas "$@" is equivalent to "$1" "$2" ....  Inside back single quote
      (accent grave) marks (``) \ quotes the characters \, `, and $.  If the
      back single quotes occur within double quotes, \ also quotes the
      character ".

      The special meaning of keywords or aliases can be removed by quoting
      any character of the keyword.  The recognition of function names or
      special command names listed below cannot be altered by quoting them.

    Arithmetic Evaluation
      The ability to perform integer arithmetic is provided with the special
      command let.  Evaluations are performed using long arithmetic.
      Constants take the form [base#]n, where base is a decimal number
      between two and thirty-six representing the arithmetic base and n is a
      number in that base.  If base is omitted, base 10 is used.

      An arithmetic expression uses the same syntax, precedence, and
      associativity of expression of the C language.  All the integral
      operators, other than ++, --, ?:, and , are supported.  Variables can
      be referenced by name within an arithmetic expression without using
      the parameter substitution syntax.  When a variable is referenced, its
      value is evaluated as an arithmetic expression.

      An internal integer representation of a variable can be specified with
      the -i option of the typeset special command.  Arithmetic evaluation
      is performed on the value of each assignment to a variable with the -i
      attribute.  If you do not specify an arithmetic base, the first
      assignment to the variable determines the arithmetic base.  This base
      is used when parameter substitution occurs.

      Since many of the arithmetic operators require quoting, an alternative
      form of the let command is provided.  For any command beginning with
      ((, all characters until the matching )) are treated as a quoted
      expression.  More precisely, ((...)) is equivalent to let "...".

    Prompting
      When used interactively, the shell prompts with the value of PS1
      before reading a command.  If at any time a new-line is typed and
      further input is needed to complete a command, the secondary prompt
      (the value of PS2) is issued.

    Conditional Expressions.
      A conditional expression is used with the [[ compound command to test
      attributes of files and to compare strings.  Word splitting and file
      name generation are not performed on the words between [[ and ]].
      Each expression can be constructed from one or more of the following
      unary or binary expressions:

           -a file             True if file exists.




 Hewlett-Packard Company           - 12 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




           -b file             True if file exists and is a block special
                               file.
           -c file             True if file exists and is a character
                               special file.
           -d file             True if file exists and is a directory.
           -f file             True if file exists and is an ordinary file.
           -g file             True if file exists and is has its setgid bit
                               set.
           -h file             True if file exists and is a a symbolic link.
           -k file             True if file exists and is has its sticky bit
                               set.
           -n string           True if length of string is non-zero.
           -o option           True if option named option is on.
           -p file             True if file exists and is a fifo special
                               file or a pipe.
           -r file             True if file exists and is readable by
                               current process.
           -s file             True if file exists and has size greater than
                               zero.
           -t fildes           True if file descriptor number fildes is open
                               and associated with a terminal device.
           -u file             True if file exists and is has its setuid bit
                               set.
           -w file             True if file exists and is writable by
                               current process.
           -x file             True if file exists and is executable by
                               current process.  If file exists and is a
                               directory, the current process has permission
                               to search in the directory.
           -z string           True if length of string is zero.  -L file
                               True if file exists and is a symbolic link.
           -O file             True if file exists and is owned by the
                               effective user ID of this process.
           -G file             True if file exists and its group matches the
                               effective group ID of this process.
           -S file             True if file exists and is a socket.
           file1 -nt file2     True if file1 exists and is newer than file2.
           file1 -ot file2     True if file1 exists and is older than file2.
           file1 -ef file2     True if file1 and file2 exist and refer to
                               the same file.
           string = pattern    True if string matches pattern.
           string != pattern   True if string does not match pattern.
           string1 <&lt&lt&lt; string2   True if string1 comes before string2 based on
                               ASCII value of their characters.
           string1 >&gt&gt&gt; string2   True if string1 comes after string2 based on
                               ASCII value of their characters.
           exp1 -eq exp2       True if exp1 is equal to exp2.
           exp1 -ne exp2       True if exp1 is not equal to exp2.
           exp1 -lt exp2       True if exp1 is less than exp2.
           exp1 -gt exp2       True if exp1 is greater than exp2.




 Hewlett-Packard Company           - 13 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




           exp1 -le exp2       True if exp1 is less than or equal to exp2.
           exp1 -ge exp2       True if exp1 is greater than or equal to
                               exp2.

      A compound expression can be constructed from these primitives by
      using any of the following, listed in decreasing order of precedence.

           (expression)                       True, if expression is true.
                                              Used to group expressions.
           ! expression                       True if expression is false.
           expression1 &&amp&amp&amp;&&amp&amp&amp; expression2         True, if expression1 and
                                              expression2 are both true.
           expression1 || expression2         True, if either expression1 or
                                              expression2 is true.

    Input/Output
      Before a command is executed, its input and output can be redirected
      using a special notation interpreted by the shell.  The following can
      appear anywhere in a simple-command or can precede or follow a command
      and are not passed on to the invoked command.  Command and parameter
      substitution occurs before word or digit is used, except as noted
      below.  File name generation occurs only if the pattern matches a
      single file and blank interpretation is not performed.

           <&lt&lt&lt;word          Use file word as standard input (file descriptor
                          0).

           >&gt&gt&gt;word          Use file word as standard output (file descriptor
                          1).  If the file does not exist, it is created.
                          If the file exists, and the noclobber option is
                          on, an error occurs; otherwise, the file is
                          truncated to zero length.

           >&gt&gt&gt;|word         Sames as >&gt&gt&gt;, except that it overrides the noclobber
                          option.

           >&gt&gt&gt;>&gt&gt&gt;word         Use file word as standard output.  If the file
                          exists, output is appended to it (by first
                          searching for the end-of-file); otherwise, the
                          file is created.

           <&lt&lt&lt;>&gt&gt&gt;word         Open file word for reading and writing as standard
                          input.  If the file does not exist it is created.

           <&lt&lt&lt;<&lt&lt&lt;[-]word      The shell input is read up to a line that matches
                          word, or to an end-of-file.  No parameter
                          substitution, command substitution, or file name
                          generation is performed on word.  The resulting
                          document, called a here-document, becomes the
                          standard input.  If any character of word is
                          quoted, no interpretation is placed upon the



 Hewlett-Packard Company           - 14 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                          characters of the document.  Otherwise, parameter
                          and command substitution occurs, \new-line is
                          ignored, and \ must be used to quote the
                          characters \, $, `, and the first character of
                          word.  If - is appended to <&lt&lt&lt;<&lt&lt&lt;, all leading tabs
                          are stripped from word and from the document.

           <&lt&lt&lt;&&amp&amp&amp;digit        The standard input is duplicated from file
                          descriptor digit (see dup(2)).

           >&gt&gt&gt;&&amp&amp&amp;digit        The standard output is duplicated to file
                          descriptor digit (see dup(2)).

           <&lt&lt&lt;&&amp&amp&amp;-            The standard input is closed.

           >&gt&gt&gt;&&amp&amp&amp;-            The standard output is closed.

           <&lt&lt&lt;&&amp&amp&amp;p            The input from the co-process is moved to standard
                          input.

           >&gt&gt&gt;&&amp&amp&amp;p            The output to the co-process is moved to standard
                          output.

      If one of the above is preceded by a digit, the file descriptor number
      cited is that specified by the digit (instead of the default 0 or 1).
      For example:

           ... 2>&gt&gt&gt;&&amp&amp&amp;1

      means file descriptor 2 is to be opened for writing as a duplicate of
      file descriptor 1.

      Redirection order is significant because the shell evaluates
      redirections referencing file descriptors in terms of the currently
      open file associated with the specified file descriptor at the time of
      evaluation.  For example:

           ...  1>fname 2>&1

      first assigns file descriptor 1 (standard output) to file  fname ,
      then assigns file descriptor 2 (standard error) to the file assigned
      to file descriptor 1; i.e., fname.  On the other hand, if the order of
      redirection is reversed as follows:

           ...  2>&1 1>fname

      file descriptor 2 is assigned to the current standard output (user
      terminal unless a different assignment is inherited).  File descriptor
      1 is then reassigned to file fname without changing the assignment of
      file descriptor 2.




 Hewlett-Packard Company           - 15 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      The input and output of a co-process can be moved to a numbered file
      descriptor allowing other commands to write to them and read from them
      using the above redirection operators.  If the input of the current
      co-process is moved to a numbered file descriptor, another co-process
      can be started.

      If a command is followed by &&amp&amp&amp; and job control is inactive, the default
      standard input for the command is the empty file /dev/null.
      Otherwise, the environment for the execution of a command contains the
      file descriptors of the invoking shell as modified by input/output
      specifications.

    Environment
      The environment (see environ(5)) is a list of name-value pairs passed
      to an executed program much like a normal argument list.  The names
      must be identifiers and the values are character strings.  The shell
      interacts with the environment in several ways.  When invoked, the
      shell scans the environment and creates a parameter for each name
      found, gives it the corresponding value, and marks it export.
      Executed commands inherit the environment.  If the user modifies the
      values of these parameters or creates new ones by using the export or
      typeset -x commands, the values become part of the environment.  The
      environment seen by any executed command is thus composed of any
      name-value pairs originally inherited by the shell whose values can be
      modified by the current shell, plus any additions which must be noted
      in export or typeset -x commands.

      The environment for any simple-command or function can be augmented by
      prefixing it with one or more parameter assignments.  A parameter
      assignment argument takes the form identifier=value.  For example,

           TERM=450 cmd args

      and

           (export TERM; TERM=450; cmd args)

      are equivalent (as far as the above execution of cmd is concerned
      except for special commands listed below that are preceded by a
      percent sign).

      If the -k option is set, all parameter assignment arguments are placed
      in the environment, even if they occur after the command name.  The
      following echo statement prints a=b c.  After the -k option is set,
      the second echo statement prints only c:

           echo a=b c
           set -k
           echo a=b c





 Hewlett-Packard Company           - 16 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      This feature is intended for use with scripts written for early
      versions of the shell, and its use in new scripts is strongly
      discouraged.  It is likely to disappear someday.

    Functions
      The function keyword (described in the Commands section above) is used
      to define shell functions.  Shell functions are read and stored
      internally.  Alias names are resolved when the function is read.
      Functions are executed like commands, with the arguments passed as
      positional parameters (see Execution below).

      Functions execute in the same process as the caller except that
      command substitution of a function creates a new process.  Functions
      share all files and present working directory with the caller.  Traps
      caught by the caller are reset to their default action inside the
      function.  If a function does not catch or specifically ignore a trap
      condition, the function terminates and the condition is passed on to
      the caller.  A trap on EXIT set inside a function is executed after
      the function completes in the environment of the caller.  Ordinarily,
      variables are shared between the calling program and the function.
      However, the typeset special command used within a function defines
      local variables whose scope includes the current function and all
      functions it calls.

      The special command return is used to return from function calls.
      Errors within functions return control to the caller.

      Function identifiers can be listed with the +f option of the typeset
      special command.  Function identifiers and the associated text of the
      functions can be listed with the -f option.  Functions can be
      undefined with the -f option of the unset special command.

      Ordinarily, functions are unset when the shell executes a shell
      script.  The -xf option of the typeset command allows a function to be
      exported to scripts that are executed without reinvoking the shell.
      Functions that must be defined across separate invocations of the
      shell should be placed in the ENV file.

    Jobs
      If the monitor option of the set command is turned on, an interactive
      shell associates a job with each pipeline.  It keeps a table of
      current jobs, printed by the jobs command, and assigns them small
      integer numbers.  When a job is started asynchronously with &&amp&amp&amp;, the
      shell prints a line resembling:

           [1] 1234

      indicating that job number 1 was started asynchronously and had one
      (top-level) process whose process ID was 1234.





 Hewlett-Packard Company           - 17 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      If you are running a job and want to do something else, type the
      suspend character (usually ^Z (Ctrl-Z)) to send a STOP signal to the
      current job.  The shell then indicates that the job has been
      `Stopped', and prints another prompt.  The state of this job can be
      manipulated by using the bg command to put it in the background,
      running other commands (while it is stopped or running in the
      background), and eventually restarting or returning the job to the
      foreground by using the fg command.  A ^Z takes effect immediately and
      resembles an interrupt, since pending output and unread input are
      discarded when ^Z is typed.

      A job run in the background stops if it tries to read from the
      terminal.  Background jobs normally are allowed to produce output, but
      can be disabled by giving the stty tostop command.  If the user sets
      this tty option, background jobs stop when trying to produce output.

      There are several ways to refer to jobs in the shell.  A job can be
      referred to by the process ID of any process in the job or by one of
      the following:

           %number             The job with the given number.
           %string             Any job whose command line begins with
                               string.
           %?string            Any job whose command line contains string.
           %%                  Current job.
           %+                  Equivalent to %%.
           %-                  Previous job.

      The shell learns immediately when a process changes state.  It informs
      the user when a job is blocked and prevented from further progress,
      but only just before it prints a prompt.

      When the monitor mode is on, each background job that completes
      triggers any trap set for CHLD.

      Attempting to leave the shell while jobs are running or stopped
      produces the warning, You have stopped (running) jobs.  Use the jobs
      command to identify them.  An immediate attempt to exit again
      terminates the stopped jobs; the shell does not produce a warning the
      second time.

    Signals
      The INT and QUIT signals for an invoked command are ignored if the
      command is followed by &&amp&amp&amp; and the monitor option is off.  Otherwise,
      signals have the values inherited by the shell from its parent, with
      the exception of signal 11 (but see also the trap command below).

    Execution
      Substitutions are made each time a command is executed.  If the
      command name matches one of the Special Commands listed below, it is
      executed within the current shell process.  Next, ksh checks the



 Hewlett-Packard Company           - 18 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      command name to determine whether it matches one of the user-defined
      functions.  If it does, ksh saves the positional parameters and then
      sets them to the arguments of the function call.  The positional
      parameter 0 is set to the function name.  When the function completes
      or issues a return, ksh restores the positional parameter list and
      executes any trap set on EXIT within the function.  The value of a
      function is the value of the last command executed.  A function is
      executed in the current shell process.  If a command name is not a
      special command or a user-defined function, ksh creates a process and
      attempts to execute the command using exec (see exec(2)).

      The shell parameter PATH defines the search path for the directory
      containing the command.  Alternative directory names are separated by
      a colon (:).  The default path is /usr/bin: (specifying /usr/bin and
      the current directory in that order).  Note that the current directory
      is specified by a null path name which can appear immediately after
      the equals sign, between colon delimiters, or at the end of the path
      list.  The search path is not used if the command name contains a /.
      Otherwise, each directory in the path is searched for an executable
      file.  If the file has execute permissions but is not a directory or
      an executable object code file, it is assumed to be a script file,
      which is a file of data for an interpreter.  If the first two
      characters of the script file are #!, exec (see exec(2)) expects an
      interpreter path name to follow.  exec then attempts to execute the
      specified interpreter as a separate process to read the entire script
      file.  If a call to exec fails, /usr/bin/ksh is spawned to interpret
      the script file.  All non-exported aliases, functions, and named
      parameters are removed in this case.  If the shell command file does
      not have read permission, or if the setuid and/or setgid bits are set
      on the file, the shell executes an agent to set up the permissions and
      execute the shell with the shell command file passed down as an open
      file.  A parenthesized command is also executed in a sub-shell without
      removing non-exported quantities.

    Command Re-entry
      The text of the last HISTSIZE (default 128) commands entered from a
      terminal device is saved in a history file.  The file
      $HOME/.sh_history is used if the HISTFILE variable is not set or
      writable.  A shell can access the commands of all interactive shells
      that use the same named HISTFILE.  The special command fc is used to
      list or edit a portion of this file.  The portion of the file to be
      edited or listed can be selected by number or by giving the first
      character or characters of the command.  A single command or range of
      commands can be specified.  If no editor program is specified as an
      argument to fc, the value of the FCEDIT parameter is used.  If FCEDIT
      is not defined, /usr/bin/ed is used.  The edited command is printed
      and re-executed upon leaving the editor.  The editor name - is used to
      skip the editing phase and to re-execute the command.  In this case a
      substitution parameter of the form old=new can be used to modify the
      command before execution.  For example, if r is aliased to fc -e -,
      typing r bad=good c re-executes the most recent command that starts



 Hewlett-Packard Company           - 19 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      with the letter c and replaces the first occurrence of the string bad
      with the string good.

      The history file will be trimmed when all of the following conditions
      occurs:

           Its size is greater than four kilobytes.

           The number of commands in it is more than HISTSIZE.

           The file has not been modified in the last ten minutes.

           The user has write permission for the directory in which the
           history file resides.

      If any one of the above conditions does not occur, the history file
      will not be trimmed. When the history file is trimmed, the latest
      HISTSIZE commands will be available in the history file.

    Special Commands
      The following simple-commands are executed in the shell process.  They
      permit input/output redirection.  Unless otherwise indicated, file
      descriptor 1 is the default output location and the exit status, when
      there are no syntax errors, is zero.  Commands that are preceded by %
      or %% are treated specially in the following ways:

           1.  Variable assignment lists preceding the command remain in
               effect when the command completes.
           2.  I/O redirections are processed after variable assignments.
           3.  Errors cause a script that contains them to abort.
           4.  Words following a command preceded by %% that are in the
               format of a variable assignment are expanded with the same
               rules as a variable assignment.  This means that tilde
               substitution is performed after the = sign and word splitting
               and file name generation are not performed.

      % : [arg ...]  The command only expands parameters.  A zero exit code
                     is returned.

      % . file [arg ...]
                     Read and execute commands from file and return.  The
                     commands are executed in the current shell environment.
                     The search path specified by PATH is used to find the
                     directory containing file.  If any arguments arg are
                     given, they become the positional parameters.
                     Otherwise the positional parameters are unchanged.  The
                     exit status is the exit status of the last command
                     executed.  It is not necessary that the execute
                     permission bit be set for file.





 Hewlett-Packard Company           - 20 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      %% alias [-tx] [name[=value] ...]
                     alias with no arguments prints the list of aliases in
                     the form name=value on standard output.  An alias is
                     defined for each name whose value is given.  A trailing
                     space in value causes the next word to be checked for
                     alias substitution.  The -t option is used to set and
                     list tracked aliases.  The value of a tracked alias is
                     the full path name corresponding to the given name.
                     The value of a tracked alias becomes undefined when the
                     value of PATH is reset, but the alias remains tracked.
                     Without the -t option, for each name in the argument
                     list for which no value is given, the name and value of
                     the alias is printed.  The -x option is used to set or
                     print exported aliases.  An exported alias is defined
                     across sub-shell environments.  Alias returns true
                     unless a name is given for which no alias has been
                     defined.

      bg [job ...]   Puts the specified jobs into the background.  The
                     current job is put in the background if job is
                     unspecified.  See Jobs for a description of the format
                     of job.

      % break [n]    Exit from the enclosing for, while, until, or select
                     loop, if any.  If n is specified, break n levels.

      % continue [n] Resume the next iteration of the enclosing for, while,
                     until, or select loop.  If n is specified, resume at
                     the n-th enclosing loop.

      cd [-L|-P] [arg]
      cd old new     This command can take either of two forms.  In the
                     first form it changes the current directory to arg.  If
                     arg is - the directory is changed to the previous
                     directory.  The -L option (default) preserves logical
                     naming when treating symbolic links.  cd -L .. moves
                     the current directory one path component closer to the
                     root directory.  The -P option preserves the physical
                     path when treating symbolic links.  cd -P .. changes
                     the working directory to the parent directory of the
                     current directory.  The shell parameter HOME is the
                     default arg.  The parameter PWD is set to the current
                     directory.  The shell parameter CDPATH defines the
                     search path for the directory containing arg.
                     Alternative directory names are separated by a colon
                     (:).  If CDPATH is null or undefined, the default value
                     is the current directory.  Note that the current
                     directory is specified by a null path name which can
                     appear immediately after the equal sign or between the
                     colon delimiters anywhere else in the path list.  If
                     arg begins with a /, the search path is not used.



 Hewlett-Packard Company           - 21 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                     Otherwise, each directory in the path is searched for
                     arg.  See also cd(1).

                     The second form of cd substitutes the string new for
                     the string old in the current directory name, PWD and
                     tries to change to this new directory.

                     The cd command cannot be executed by rksh.

      echo [arg ...] See echo(1) for usage and description.

      % eval [arg ...]
                     Reads the arguments as input to the shell and executes
                     the resulting command(s).

      % exec [arg ...]
                     Parameter assignments remain in effect after the
                     command completes.  If arg is given, the command
                     specified by the arguments is executed in place of this
                     shell without creating a new process.  Input/output
                     arguments can appear and affect the current process.
                     If no arguments are given, the effect of this command
                     is to modify file descriptors as prescribed by the
                     input/output redirection list.  In this case, any file
                     descriptor numbers greater than 2 opened with this
                     mechanism are closed when invoking another program.

      % exit [n]     Causes the shell to exit with the exit status specified
                     by n.  If n is omitted, the exit status is that of the
                     last command executed.  An end-of-file also causes the
                     shell to exit, except when a shell has the ignoreeof
                     option set (see set below).

      %% export [name [=value] ...]
                     The given names are marked for automatic export to the
                     environment of subsequently executed commands.

      fc [-eename] [-nlr] [first [last]]
      fc -e - [old=new] [command]
                     In the first form, a range of commands from first to
                     last is selected from the last HISTSIZE commands typed
                     at the terminal.  The arguments first and last can be
                     specified as a number or string.  A given string is
                     used to locate the most recent command.  A negative
                     number is used to offset the current command number.
                     The -l option causes the commands to be listed on
                     standard output.  Otherwise, the editor program ename
                     is invoked on a file containing these keyboard
                     commands.  If ename is not supplied, the value of the
                     parameter FCEDIT (default /usr/bin/ed) is used as the
                     editor.  Once editing has ended, the commands (if any)



 Hewlett-Packard Company           - 22 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                     are executed.  If last is omitted, only the command
                     specified by first is used.  If first is not specified,
                     the default is the previous command for editing and -16
                     for listing.  The -r option reverses the order of the
                     commands and the -n option suppresses command numbers
                     when listing.  In the latter, the command is re-
                     executed after the substitution old=new is performed.

      fg [job ...]   Brings each job into the foreground in the order
                     specified.  If no job is specified, the current job is
                     brought into the foreground.  See Jobs for a
                     description of the format of job.

      getopts optstring name [arg ...]
                     Checks arg for legal options.  If arg is omitted, the
                     positional parameters are used.  An option argument
                     begins with a + or a -.  An option not beginning with +
                     or -, or the argument -- ends the options.  optstring
                     contains the letters that getopts recognizes.  If a
                     letter is followed by a :, that option is expected to
                     have an argument.  The options can be separated from
                     the argument by blanks.

                     getopts places the next option letter it finds inside
                     variable name each time it is invoked with a +
                     preceding it when arg begins with a +.  The index of
                     the next arg is stored in OPTIND.  The option argument,
                     if any, gets stored in OPTARG.

                     A leading : in optstring causes getopts to store the
                     letter of an invalid option in OPTARG, and to set name
                     to ? for an unknown option and to : when a required
                     option is missing.  Otherwise, getopts prints an error
                     message.  The exit status is non-zero when there are no
                     more options.  See also getopts(1).

      jobs [-lnp] [job ...]
                     Lists information about each given job; or all active
                     jobs if job is omitted.  The -l option lists process
                     ids in addition to the normal information.  The -n
                     option only displays jobs that have stopped or exited
                     since last notified.  The -p option causes only the
                     process group to be listed.  See Jobs for a description
                     of the format of job.

      kill [-sig] process ...
                     Sends either the TERM (terminate) signal or the
                     specified signal to the specified jobs or processes.
                     Signals are given either by number or name (as given in
                     signal(5), stripped of the prefix SIG).  The signal
                     names are listed by kill -l.  No default exists; merely



 Hewlett-Packard Company           - 23 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                     typing kill does not affect the current job.  If the
                     signal being sent is TERM (terminate) or HUP (hangup),
                     the job or process is sent a CONT (continue) signal
                     when stopped.  The process argument can be either a
                     process ID or job.  If the first argument to kill is a
                     negative integer, it is interpreted as a sig argument
                     and not as a process group.  See also kill(1).

      let arg ...    Each arg is a separate arithmetic expression to be
                     evaluated.  See Arithmetic Evaluation above, for a
                     description of arithmetic expression evaluation.  The
                     exit status is 0 if the value of the last expression is
                     non-zero, and 1 otherwise.

      % newgrp [arg ...]
                     Equivalent to exec newgrp arg ....

      print[-Rnprsu[n]] [arg ...]
                     The shell output mechanism.  With no options or with
                     option - or -- the arguments are printed on standard
                     output as described by echo(1).  Raw mode, -R or -r,
                     ignores the escape conventions of echo.  The -R option
                     prints all subsequent arguments and options other than
                     -n.  The -p option causes the arguments to be written
                     onto the pipe of the process spawned with |&&amp&amp&amp; instead of
                     standard output.  The -s option causes the arguments to
                     be written onto the history file instead of standard
                     output.  The -u option can be used to specify a one-
                     digit file descriptor unit number n on which the output
                     is to be placed.  The default is 1.  If the option -n
                     is used, no new-line character is added to the output.

      pwd [-L|-P]    With no arguments prints the current working directory
                     (equivalent to print -r - $PWD).  The -L option
                     (default) preserves the logical meaning of the current
                     directory and -P preserves the physical meaning of the
                     current directory if it is a symbolic link.  See the
                     special cd command, cd(1), ln(1)), and pwd(1).

      read [-prsu[n]] [name] [?prompt] [name ...]
                     The shell input mechanism.  One line is read and broken
                     up into words using the characters in IFS as
                     separators.  In -r raw mode, \ at the end of a line
                     does not signify line continuation.  The first word is
                     assigned to the first name, the second word to the
                     second name, etc., with remaining words assigned to the
                     last name.  The -p option causes the input line to be
                     taken from the input pipe of a process spawned by the
                     shell using |&&amp&amp&amp;.  If the -s option is present, the input
                     is saved as a command in the history file.  The option
                     -u can be used to specify a one-digit file descriptor



 Hewlett-Packard Company           - 24 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                     unit to read from.  The file descriptor can be opened
                     with the exec special command.  The default value of n
                     is 0.  If name is omitted, REPLY is used as the default
                     name.  The return code is 0, unless an end-of-file is
                     encountered.  An end-of-file with the -p option causes
                     cleanup for this process so that another process can be
                     spawned.  If the first argument contains a ?, the
                     remainder of this word is used as a prompt when the
                     shell is interactive.  If the given file descriptor is
                     open for writing and is a terminal device, the prompt
                     is placed on this unit.  Otherwise the prompt is issued
                     on file descriptor 2.  The return code is 0, unless an
                     end-of-file is encountered.  See also read(1).

      %% readonly [name[=value] ...]
                     The given names are marked read-only and these names
                     cannot be changed by subsequent assignment.

      % return [n]   Causes a shell function to return to the invoking
                     script with the return status specified by n.  If n is
                     omitted, the return status is that of the last command
                     executed.  Only the low 8 bits of n are passed back to
                     the caller.  If return is invoked while not in a
                     function or executing a script by the . (dot) built-in
                     command, it has the same effect as an exit command.

      set [+<b class="man">_aefhkmnopstuvx | +<b class="man">_o option] ... [ +<b class="man">_A name] [arg ...]
                     The following options are used for this command:
                          -A      Array assignment.  Unset the variable name
                                  and assign values sequentially from the
                                  list arg.  If +A is used, the variable
                                  name is not unset first.
                          -a      All subsequent defined parameters are
                                  automatically exported.
                          -e      If the shell is non-interactive and if a
                                  command fails, execute the ERR trap, if
                                  set, and exit immediately.  This mode is
                                  disabled while reading profiles.
                          -f      Disables file name generation.
                          -h      Each command whose name is an identifier
                                  becomes a tracked alias when first
                                  encountered.
                          -k      All parameter assignment arguments (not
                                  just those that precede the command name)
                                  are placed in the environment for a
                                  command.
                          -m      Background jobs are run in a separate
                                  process group and a line is printed upon
                                  completion.  The exit status of background
                                  jobs is reported in a completion message.
                                  This option is turned on automatically for



 Hewlett-Packard Company           - 25 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                                  interactive shells.
                          -n      Read commands and check them for syntax
                                  errors, but do not execute them.  The -n
                                  option is ignored for interactive shells.
                          -o      The -o argument takes any of several
                                  option names, but only one option can be
                                  specified with each -o option.  If none is
                                  supplied, the current option settings are
                                  printed.  The -o argument option names
                                  follow:

                                  allexport         Same as -a.
                                  bgnice            All background jobs are
                                                    run at a lower priority.
                                  errexit           Same as -e.
                                  emacs             Activates an emacs-style
                                                    in-line editor for
                                                    command entry.
                                  gmacs             Activates a gmacs-style
                                                    in-line editor for
                                                    command entry.
                                  ignoreeof         The shell does not exit
                                                    on end-of-file.  The
                                                    command exit must be
                                                    used.
                                  keyword           Same as -k.
                                  markdirs          All directory names
                                                    resulting from file name
                                                    generation have a
                                                    trailing / appended.
                                  monitor           Same as -m.
                                  noclobber         Prevents redirection >&gt&gt&gt;
                                                    from truncating existing
                                                    files.  Requires >&gt&gt&gt;| to
                                                    truncate a file when
                                                    turned on.
                                  noexec            Same as -n.
                                  noglob            Same as -f.
                                  nolog             Do not save function
                                                    definitions in history
                                                    file.
                                  nounset           Same as -u.
                                  privileged        Same as -p.
                                  verbose           Same as -v.
                                  trackall          Same as -h.
                                  vi                Activates the insert
                                                    mode of a vi-style in-
                                                    line editor until you
                                                    press the ESC key which
                                                    puts you in move mode.
                                                    A return sends the line.



 Hewlett-Packard Company           - 26 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                                  viraw             Each character is
                                                    processed as it is typed
                                                    in vi mode.
                                  xtrace            Same as -x.

                          -p      Disables processing of the $HOME/.profile
                                  file and uses the file /etc/suid_profile
                                  instead of the ENV file.  This mode is on
                                  whenever the effective uid (gid) is not
                                  equal to the real uid (gid).  Turning this
                                  off causes the effective uid and gid to be
                                  set to the real uid and gid.
                          -s      Sort the positional parameters.
                          -t      Exit after reading and executing one
                                  command.
                          -u      Treat unset parameters as an error when
                                  substituting.
                          -v      Print shell input lines as they are read.
                          -x      Print commands and their arguments as they
                                  are executed.
                          -       Turns off -x and -v options and stops
                                  examining arguments for options.
                          --      Do not change any of the options; useful
                                  in setting $1 to a value beginning with -.
                                  If no arguments follow this option, the
                                  positional parameters are unset.

                     Using + instead of - before a option causes the option
                     to be turned off.  These options can also be used when
                     invoking the shell.  The current set of options can be
                     examined by using $-.

                     Unless -A is specified, the remaining arg arguments are
                     positional parameters and are assigned consecutively to
                     $1, $2, ....  If neither arguments nor options are
                     given, the values of all names are printed on the
                     standard output.

      % shift [n]    The positional parameters from $n+1 ...  are renamed
                     $1 ...; default n is 1.  The parameter n can be any
                     arithmetic expression that evaluates to a non-negative
                     number less than or equal to $#.

      test [expr]    Evaluate conditional expression expr.  See test(1) for
                     usage and description.  The arithmetic comparison
                     operators are not restricted to integers.  They allow
                     any arithmetic expression.  Four additional primitive
                     expressions are allowed:

                          -L file             True if file is a symbolic
                                              link.



 Hewlett-Packard Company           - 27 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                          file1 -nt file2     True if file1 is newer than
                                              file2.
                          file1 -ot file2     True if file1 is older than
                                              file2.
                          file1 -ef file2     True if file1 has the same
                                              device and i-node number as
                                              file2.

      % times        Print the accumulated user and system times for the
                     shell and for processes run from the shell.

      % trap [arg] [sig ...]
                     arg is a command read and executed when the shell
                     receives signal(s) sig.  (Note that arg is scanned once
                     when the trap is set and once when the trap is taken.)
                     Each sig can be given as a number or name of the
                     signal.  Trap commands are executed in signal number
                     order.  Any attempt to set a trap on a signal that was
                     ignored upon entering the current shell has no effect.
                     If arg is omitted or is -, all traps for sig are reset
                     to their original values.  If arg is the null string,
                     this signal is ignored by the shell and by the commands
                     it invokes.  If sig is DEBUG, arg is executed after
                     each command.  If sig is ERR, arg is executed whenever
                     a command has a non-zero exit code.  If sig is 0 or
                     EXIT and the trap statement is executed inside the body
                     of a function, the command arg is executed after the
                     function completes.  If sig is 0 or EXIT for a trap set
                     outside any function, the command arg is executed on
                     exit from the shell.  The trap command with no
                     arguments prints a list of commands associated with
                     each signal number.

      %% typeset [+<b class="man">_LRZfilrtux[n]] [name[ = value]] ...
                     Parameter assignments remain in effect after the
                     command completes.  When invoked inside a function, a
                     new instance of the parameter name is created.  The
                     parameter value and type are restored when the function
                     completes.  The following list of attributes can be
                     specified:
                          -L   Left justify and remove leading blanks from
                               value.  If n is non-zero, it defines the
                               width of the field.  Otherwise, it is
                               determined by the width of the value of first
                               assignment.  When the name is assigned, the
                               value is filled on the right with blanks or
                               truncated, if necessary, to fit into the
                               field.  Leading zeros are removed if the -Z
                               option is also set.  The -R option is turned
                               off.




 Hewlett-Packard Company           - 28 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




                          -R   Right justify and fill with leading blanks.
                               If n is non-zero, it defines the width of the
                               field.  Otherwise, it is determined by the
                               width of the value of first assignment.  The
                               field is left-filled with blanks or truncated
                               from the end if the parameter is reassigned.
                               The -L option is turned off.
                          -Z   Right justify and fill with leading zeros if
                               the first non-blank character is a digit and
                               the -L option has not been set.  If n is
                               non-zero, it defines the width of the field.
                               Otherwise, it is determined by the width of
                               the value of first assignment.
                          -f   Cause name to refer to function names rather
                               than parameter names.  No assignments can be
                               made to the name declared with the typeset
                               statement.  The only other valid options are
                               -t (which turns on execution tracing for this
                               function) and -x (which allows the function
                               to remain in effect across shell procedures
                               executed in the same process environment).
                          -i   Parameter is an integer.  This makes
                               arithmetic faster.  If n is non-zero, it
                               defines the output arithmetic base; otherwise
                               the first assignment determines the output
                               base.
                          -l   Convert all uppercase characters to
                               lowercase.  The uppercase -u option is turned
                               off.
                          -r   Any given name is marked "read only" and
                               cannot be changed by subsequent assignment.
                          -t   Tag the named parameters.  Tags are user
                               definable and have no special meaning to the
                               shell.
                          -u   Convert all lowercase characters to uppercase
                               characters.  The lowercase -l option is
                               turned off.
                          -x   Mark any given name for automatic export to
                               the environment of subsequently executed
                               commands.

                               Using + instead of - causes these options to
                               be turned off.  If no name arguments are
                               given but options are specified, a list of
                               names (and optionally the values) of the
                               parameters that have these options set is
                               printed.  Using + instead of - retains the
                               values to be printed.  If neither names nor
                               options are given, the names and attributes
                               of all parameters are printed.




 Hewlett-Packard Company           - 29 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      ulimit [n]     If n is given, impose a size limit of n 512 byte blocks
                     on files written by child processes (files of any size
                     can be read).  If n is not given, the current limit is
                     printed.

      umask [mask]   The user file-creation mask is set to mask (see
                     umask(2)).  mask can either be an octal number or a
                     symbolic value as described in chmod(1).  If a symbolic
                     value is given, the new umask value is the complement
                     of the result of applying mask to the complement of the
                     previous umask value.  If mask is omitted, the current
                     value of the mask is printed.  See also umask(1).

      unalias name ...
                     The parameters given by the list of names are removed
                     from the alias list.

      unset [-f] name ...
                     The parameters given by the list of names are
                     unassigned; that is, their values and attributes are
                     erased.  Read-only variables cannot be unset.  If the
                     -f option is set, names refer to function names.
                     Unsetting ERRNO, LINENO, MAILCHECK, OPTARG, OPTIND,
                     RANDOM, SECONDS, TMOUT, and _ removes their special
                     meaning even if they are subsequently assigned to.

      % wait [job]   Wait for the specified job to terminate or stop, and
                     report its status.  This status becomes the return code
                     for the wait command.  If job is not given, wait waits
                     for all currently active child processes to terminate
                     or stop.  The termination status returned is that of
                     the last process.  See Jobs for a description of the
                     format of a job.

      whence [-pv] name ...
                     For each name, indicate how it would be interpreted if
                     used as a command name.  The -v option produces a more
                     verbose report.  The -p option does a path search for
                     name even if name is an alias, a function, or a
                     reserved word.

    Invoking ksh
      If the shell is invoked by exec (see exec(2)), and the first character
      of argument zero ($0) is -, the shell is assumed to be a login shell
      and commands are read first from /etc/profile.  The expression
      ${HOME:-.}/.profile is then evaluated and an attempt to open the
      resulting filename is made.  If the file is opened successfully, the
      file is read.  Next, commands are read from the file named by
      performing parameter substitution on the value of the environment
      parameter ENV, if the file exists.  If the -s option is not present
      and arg is, a path search is performed on the first arg to determine



 Hewlett-Packard Company           - 30 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      the name of the script to execute.  When running ksh with arg, the
      script arg must have read permission and any setuid and getgid
      settings are ignored.  Commands are then read as described below.  The
      following options are interpreted by the shell when it is invoked:

           -c string      If the -c option is present, commands are read
                          from string.
           -s             If the -s option is present or if no arguments
                          remain, commands are read from the standard input.
                          Shell output, except for the output of some of the
                          Special Commands listed above, is written to file
                          descriptor 2.
           -i             If the -i option is present or if the shell input
                          and output are attached to a terminal, the shell
                          is interactive.  In this case SIGTERM is ignored
                          (so that kill 0 does not kill an interactive
                          shell) and SIGINT +1 is caught and ignored (so
                          that wait is interruptible).  In all cases,
                          SIGQUIT is ignored by the shell.  (See signal(5).)
           -r             If the -r option is present, the shell is a
                          restricted shell.

      The remaining options and arguments are described under the set
      command above.

    rksh Only
      rksh is used to set up login names and execution environments where
      capabilities are more controlled than those of the standard shell.
      The actions of rksh are identical to those of ksh, except that the
      following are forbidden:

           +  Changing directory (see cd(1))
           +  Setting the value of SHELL, ENV, or PATH
           +  Specifying path or command names containing /
           +  Redirecting output (>&gt&gt&gt;, >&gt&gt&gt;|, <&lt&lt&lt;>&gt&gt&gt;, and >&gt&gt&gt;>&gt&gt&gt;)

      The restrictions above are enforced after the .profile and ENV files
      are interpreted.

      When a command to be executed is found to be a shell procedure, rksh
      invokes ksh to execute it.  Thus, the end-user is provided with shell
      procedures accessible to the full power of the standard shell, while
      being restricted to a limited menu of commands.  This scheme assumes
      that the end-user does not have write and execute permissions in the
      same directory.

      When a shell procedure is invoked from rksh, the shell interpreter
      specified with the #! magic inherits all the restricted features of
      rksh.  So, the shell procedures written for execution under rksh with
      the intent of utilizing the full power of the standard shell should
      not specify an interpreter with #!.



 Hewlett-Packard Company           - 31 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      These rules effectively give the writer of the .profile file complete
      control over user actions, by performing guaranteed set-up actions and
      leaving the user in an appropriate directory (probably not the login
      directory).

      The system administrator often sets up a directory of commands
      (usually /usr/rbin) that can be safely invoked by rksh.  HP-UX systems
      provide a restricted editor red (see ed(1)), suitable for restricted
      users.

 COMMAND-LINE EDITING
    In-line Editing Options
      Normally, each command line typed at a terminal device is followed by
      a new-line (carriage-return or line-feed).  If either the emacs,
      gmacs, or vi option is set, the user can edit the command line.  An
      editing option is automatically selected each time the VISUAL or
      EDITOR variable is assigned a value ending in either of these option
      names.

      The editing features require that the user's terminal accept Return as
      carriage return without line feed and that a space character must
      overwrite the current character on the screen.  ADM terminal users
      should set the ``space/advance'' switch to ``space''.  Hewlett-Packard
      terminal users should set the straps to ``bcGHxZ etX''.

      The editing modes enable the user to look through a window at the
      current line.  The default window width is 80, unless the value of
      COLUMNS is defined.  If the line is longer than the window width minus
      two, a mark displayed at the end of the window notifies the user.  The
      mark is a >&gt&gt&gt;, <&lt&lt&lt;, or * if the line extends respectively on the right,
      left, or both side(s) of the window.  As the cursor moves and reaches
      the window boundaries, the window is centered about the cursor.

      The search commands in each edit mode provide access to the history
      file.  Only strings are matched, not patterns, although a leading ^ in
      the string restricts the match to begin at the first character in the
      line.

    Emacs Editing Mode
      This mode is invoked by either the emacs or gmacs option.  Their sole
      difference is their handling of ^T.  To edit, the user moves the
      cursor to the point needing correction and inserts or deletes
      characters or words.  All editing commands are control characters or
      escape sequences.  The notation for control characters is circumflex
      (^) followed by the character.  For example, ^F is the notation for
      Ctrl-F.  This is entered by pressing the f key while holding down the
      Ctrl (control) key.  The Shift key is not pressed.  (The notation ^?
      indicates the DEL (delete) key.)

      The notation for escape sequences is M- followed by a character.  For
      example, M-f (pronounced Meta f) is entered by depressing ESC (ASCII



 Hewlett-Packard Company           - 32 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      033 ) followed by f.  M-F would be the notation for ESC followed by
      Shift (capital) F.

      All edit commands operate from any place on the line (not only at the
      beginning).  Neither the Return nor the Line Feed key is entered after
      edit commands, except when noted.

      ^F             Move cursor forward (right) one character.
      M-f            Move cursor forward one word.  (The editor's idea of a
                     word is a string of characters consisting of only
                     letters, digits and underscores.)
      ^B             Move cursor backward (left) one character.
      M-b            Move cursor backward one word.
      ^A             Move cursor to start of line.
      ^E             Move cursor to end of line.
      ^]char         Move cursor forward to character char on current line.
      M-^]char       Move cursor backward to character char on current line.
      ^X^X           Interchange the cursor and mark.
      erase          (User defined erase character as defined by the stty(1)
                     command, usually ^H or #.) Delete previous character.
      ^D             Delete current character.
      eof            End-of-file character, normally ^D, terminates the
                     shell if the current line is null.
      M-d            Delete current word.
      M-^H           (Meta-backspace) Delete previous word.
      M-h            Delete previous word.
      M-^?           (Meta-DEL) Delete previous word (if interrupt character
                     is ^? (DEL, the default) this command does not work).
      ^T             Transpose current character with next character in
                     emacs mode.  Transpose two previous characters in gmacs
                     mode.
      ^C             Capitalize current character.
      M-c            Capitalize current word.
      M-l            Change the current word to lowercase.
      ^K             Delete from the cursor to the end of the line.  If
                     preceded by a numerical parameter whose value is less
                     that the current cursor position, delete from the given
                     position up to the cursor.  If preceded by a numerical
                     parameter whose value is greater than the current
                     cursor position, from the cursor up to the given
                     position.
      ^W             Kill from the cursor to the mark.
      M-p            Push the region from the cursor to the mark on the
                     stack.
      kill           (User-defined kill character, as defined by the stty(1)
                     command, usually ^G or @.) Kill the entire current
                     line.  If two kill characters are entered in
                     succession, all subsequent consecutive kill characters
                     cause a line feed (useful when using paper terminals).
      ^Y             Restore last item removed from line (yank item back to
                     the line).



 Hewlett-Packard Company           - 33 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      ^L             Line feed and print current line.
      ^@             (Null character) Set mark.
      M-space        (Meta space) Set mark.
      ^J             (New line)  Execute the current line.
      ^M             (Return)  Execute the current line.
      ^P             Fetch previous command.  Each time ^P is entered, the
                     next previous command in the history list is accessed.
      ^N             Fetch next command.  Each time ^N is entered the next
                     command in the history list is accessed.
      M-<&lt&lt&lt;            Fetch the least recent (oldest) history line.
      M->&gt&gt&gt;            Fetch the most recent (youngest) history line.
      ^Rstring       Reverse search history for a previous command line
                     containing string. If a parameter of zero is given, the
                     search is forward.  string is terminated by a Return or
                     New-Line.  If string is preceded by a ^, the matched
                     line must begin with string.  If string is omitted, the
                     next command line containing the most recent string is
                     accessed.  In this case a parameter of zero reverses
                     the direction of the search.
      ^O             Operate - Execute the current line and fetch from the
                     history file the next line relative to current line.
      M-digits       (Escape) Define numeric parameter, the digits are taken
                     as a parameter to the next command.  The commands that
                     accept a parameter are ^F, ^B, erase, ^C, ^D, ^K, ^R,
                     ^P, ^N, ^], M-., M-_, M-b, M-c, M-d, M-f, M-h, M-l and
                     M-^H.
      M-letter       Softkey. User's alias list is searched for an alias by
                     the name _letter and if an alias of this name is
                     defined, its value is inserted on the input queue.
                     This letter must not be one of the above meta-
                     functions.
      M-.            The last word of the previous command is inserted on
                     the line.  If preceded by a numeric parameter, the
                     value of this parameter determines which word to insert
                     rather than the last word.
      M-_            Same as M-..
      M-*            Attempt file-name generation on the current word.
      M-ESC          File-name completion.  Replaces the current word with
                     the longest common prefix of all filenames matching the
                     current word with an asterisk appended.  If the match
                     is unique, a / is appended if the file is a directory
                     and a space is appended if the file is not a directory.
      M-=            List files matching current word pattern as if an
                     asterisk were appended.
      ^U             Multiply parameter of next command by 4.
      \              Escape next character.  Editing characters, the user's
                     erase, kill and interrupt (normally ^?) characters can
                     be entered in a command line or in a search string if
                     preceded by a \.  The \ removes the next character's
                     editing features (if any).




 Hewlett-Packard Company           - 34 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      ^V             Display version of the shell.
      M-#            Insert a # at the beginning of the line and execute it.
                     This causes a comment to be inserted in the history
                     file.

    Vi Editing Mode
      There are two typing modes.  Entering a command puts you into input
      mode.  To edit, the user enters control mode by pressing ESC and moves
      the cursor to the point needing correction, then inserts or deletes
      characters or words.  Most control commands accept an optional repeat
      count prior to the command.

      In vi mode on most systems, canonical processing is initially enabled
      and the command is echoed again if the speed is 1200 baud or greater
      and contains any control characters, or if less than one second has
      elapsed since the prompt was printed.  The ESC character terminates
      canonical processing for the remainder of the command and the user can
      then modify the command line.  This scheme has the advantages of
      canonical processing with the type-ahead echoing of raw mode.

      Setting the viraw option always disables canonical processing on the
      terminal.  This mode is implicit for systems that do not support two
      alternate end-of-line delimiters, and can be helpful for certain
      terminals.

    Input Edit Commands
      By default the editor is in input mode.

      erase          Delete previous character.  (erase is a user-defined
                     erase character, as defined by the stty(1) command,
                     usually ^H or #.)
      ^W             Delete the previous blank separated word.
      ^D             Terminate the shell.
      ^V             Escape next character.  Editing characters, erase or
                     kill characters can be entered in a command line or in
                     a search string if preceded by a ^V.  ^V removes the
                     next character's editing features (if any).
      \              Escape the next erase or kill character.

    Motion Edit Commands
      These commands move the cursor.  The designation [count] causes a
      repetition of the command the cited number of times.

           [count]l       Cursor forward (right) one character.
           [count]w       Cursor forward one alphanumeric word.
           [count]W       Cursor to the beginning of the next word that
                          follows a blank.
           [count]e       Cursor to end of word.
           [count]E       Cursor to end of the current blank-delimited word.
           [count]h       Cursor backward (left) one character.




 Hewlett-Packard Company           - 35 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




           [count]b       Cursor backward one word.
           [count]B       Cursor to preceding blank separated word.
           [count]|       Cursor to column count.  Default is 1.
           [count]fc      Find the next character c in the current line.
           [count]Fc      Find the previous character c in the current line.
           [count]tc      Equivalent to f followed by h.
           [count]Tc      Equivalent to F followed by l.
           [count];       Repeats the last single character find command, f,
                          F, t, or T.
           [count],       Reverses the last single character find command.
           0              Cursor to start of line.
           ^              Cursor to first nonblank character in line.
           $              Cursor to end of line.
    Search Edit Commands
      These commands access your command history.
           [count]k          Fetch previous command.  Each time k is
                             pressed, the next earlier command in the
                             history list is accessed.
           [count]-          Equivalent to k.
           [count]j          Fetch next command.  Each time j is entered,
                             the next later command in the history list is
                             accessed.
           [count]+          Equivalent to j.
           [count]G          The command number count is fetched.  The
                             default is the first command in the history
                             list.
           /string           Search backward through history for a previous
                             command containing string.  string is
                             terminated by a "Return" or "New-line".  If
                             string is preceded by a ^, the matched line
                             must begin with string.  If string is null, the
                             previous string is used.
           ?string           Same as / but search in the forward direction.
           n                 Search for next match of the last pattern to /
                             or ? commands.
           N                 Search for next match of the last pattern to /
                             or ?, but in reverse direction.  Search history
                             for the string entered by the previous /
                             command.
    Text Modification Edit Commands
      These commands modify the line.
           a                 Enter input mode and enter text after the
                             current character.
           A                 Append text to the end of the line.  Equivalent
                             to $a.
           [count]cmotion
           c[count]motion    Move cursor to the character position specified
                             by motion, deleting all characters between the
                             original cursor position and new position, and
                             enter input mode.  If motion is c, the entire
                             line is deleted and input mode entered.



 Hewlett-Packard Company           - 36 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




           C                 Delete the current character through the end of
                             line and enter input mode.  Equivalent to c$.
           S                 Equivalent to cc.
           D                 Delete the current character through end of
                             line.  Equivalent to d$.
           [count]dmotion
           d[count]motion    Move cursor to the character position specified
                             by motion, deleting all characters between the
                             original cursor position and new position.  If
                             motion is d, the entire line is deleted.
           i                 Enter input mode and insert text before the
                             current character.
           I                 Insert text before the beginning of the line.
                             Equivalent to the two-character sequence 0i.
           [count]P          Place the previous text modification before the
                             cursor.
           [count]p          Place the previous text modification after the
                             cursor.
           R                 Enter input mode and replace characters on the
                             screen with characters you type in overlay
                             fashion.
           [count]rc         Replace the current character with c.
           [count]x          Delete current character.
           [count]X          Delete preceding character.
           [count].          Repeat the previous text modification command.
           [count]~          Invert the case of the current character and
                             advance the cursor.
           [count]_          Causes the count word of the previous command
                             to be appended at the current cursor location
                             and places the editor in input mode at the end
                             of the appended text.  The last word is used if
                             count is omitted.
           *                 Appends an * to the current word and attempts
                             file name generation.  If no match is found,
                             the bell rings.  If a match is found, the word
                             is replaced by the matching string and the
                             command places the editor in input mode.
           ESC
           \                 Attempt file name completion on the current
                             word.  Replaces the current word with the
                             longest common prefix of all filenames matching
                             the current word with an asterisk appended.  If
                             the match is unique, a / is appended if the
                             file is a directory and a space is appended if
                             the file is not a directory.
    Other Edit Commands
           [count]ymotion
           y[count]motion    Yank current character through character that
                             motion would move the cursor to and puts them
                             into the delete buffer.  The text and cursor
                             are unchanged.



 Hewlett-Packard Company           - 37 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




           Y                 Yanks from current position to end of line.
                             Equivalent to y$.
           u                 Undo the last text modifying command.
           U                 Undo all the text modifying commands performed
                             on the line.
           [count]v          Returns the command fc -e ${VISUAL:-${EDITOR:-
                             vi}} count in the input buffer.  If count is
                             omitted, the current line is used.
           ^L                Line feed and print current line.  Has effect
                             only in control mode.
           ^J                (New line)  Execute the current line,
                             regardless of mode.
           ^M                (Return)  Execute the current line, regardless
                             of mode.
           #                 Equivalent to I# followed by Return.  Sends the
                             line after inserting a # in front of the line
                             and after each new-line.  Useful for inserting
                             the current command line in the history list
                             without executing it.
           =                 List the filenames that match the current word
                             if an asterisk were appended to it.
           @letter           The user's alias list is searched for an alias
                             by the name _letter and if an alias of this
                             name is defined, its value is inserted on the
                             input queue for processing.

 EXTERNAL INFLUENCES
    Environment Variables
      LC_COLLATE determines the collating sequence used in evaluating
      pattern matching notation for file name generation.

      LC_CTYPE determines the classification of characters as letters, and
      the characters matched by character class expressions in pattern
      matching notation.

      If LC_COLLATE or LC_CTYPE is not specified in the environment or is
      set to the empty string, the value of LANG is used as a default for
      each unspecified or empty variable.  If LANG is not specified or is
      set to the empty string, a default of "C" (see lang(5)) is used
      instead of LANG.  If any internationalization variable contains an
      invalid setting, ksh behaves as if all internationalization variables
      are set to "C".  See environ(5).

      KSH_QUOTEMC switches  the  processing  of  quoted  metacharacters in
      "[[ string = pattern ]]" constructs.  If KSH_QUOTEMC=true is defined
      in the environment, then any part of pattern can be quoted to cause it
      to be matched as a string.  This usage follows the conventions of
      dtksh(1).  If KSH_QUOTEMC is not defined in the environment, then
      processing follows the traditional Korn shell conventions.





 Hewlett-Packard Company           - 38 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




    International Code Set Support
      Single-byte character code sets are supported.

 RETURN VALUE
      Errors detected by the shell, such as syntax errors, cause the shell
      to return a non-zero exit status.  Otherwise, the shell returns the
      exit status of the last command executed (also see the exit command
      above).  If the shell is being used non-interactively, execution of
      the shell file is abandoned.  Runtime errors detected by the shell are
      reported by printing the command or function name and the error
      condition.  If the line number on which the error occurred is greater
      than one, the line number is also printed in brackets ([]) after the
      command or function name.

 WARNINGS
      File descriptors 10 and 54 through 60 are used internally by the Korn
      Shell.  Applications using these and forking a subshell should not
      depend upon them surviving in the subshell or its descendants.

      If a command which is a tracked alias is executed, and a command with
      the same name is installed in a directory in the search path before
      the directory where the original command was found, the shell
      continues to load and execute the original command.  Use the -t option
      of the alias command to correct this situation.

      If you move the current directory or one above it, pwd may not give
      the correct response.  Use the cd command with a full path name to
      correct this situation.

      Some very old shell scripts contain a caret (^) as a synonym for the
      pipe character (|).  Note however, ksh does not recognize the caret as
      a pipe character.

      If a command is piped into a shell command, all variables set in the
      shell command are lost when the command completes.

      Using the fc built-in command within a compound command causes the
      entire command to disappear from the history file.

      The built-in command . file reads the entire file before any commands
      are executed.  Therefore, alias and unalias commands in the file do
      not apply to any functions defined in the file.

      Traps are not processed while the shell is waiting for a foreground
      job.  Thus, a trap on CHLD is not executed until the foreground job
      terminates.

      The export built-in command does not handle arrays properly.  Only the
      first element of an array is exported to the environment.





 Hewlett-Packard Company           - 39 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      Background processes started from a non-interactive shell cannot be
      accessed by using job control commands.

      In an international environment, character ordering is determined by
      the setting of LC_COLLATE, rather than by the binary ordering of
      character values in the machine collating sequence.  This brings with
      it certain attendant dangers, particularly when using range
      expressions in file name generation patterns.  For example, the
      command,

           rm [a-z]*

      might be expected to match all file names beginning with a lowercase
      alphabetic character.  However, if dictionary ordering is specified by
      LC_COLLATE, it would also match file names beginning with an uppercase
      character (as well as those beginning with accented letters).
      Conversely, it would fail to match letters collated after z in
      languages such as Danish or Norwegian.

      The correct (and safe) way to match specific character classes in an
      international environment is to use a pattern of the form:

           rm [[:lower:]]*

      This uses LC_CTYPE to determine character classes and works
      predictably for all supported languages and codesets.  For shell
      scripts produced on non-internationalized systems (or without
      consideration for the above dangers), it is recommended that they be
      executed in a non-NLS environment.  This requires that LANG,
      LC_COLLATE, etc., be set to "C" or not set at all.

      Be aware that the value of the IFS variable in the user's environment
      affects the behavior of scripts.

      ksh implements command substitution by creating a pipe between itself
      and the command.  If the root file system is full, the substituted
      command cannot write to the pipe.  As a result, the shell receives no
      input from the command, and the result of the substitution is null.
      In particular, using command substitution for variable assignment
      under such circumstances results in the variable being silently
      assigned a NULL value.

 AUTHOR
      ksh was developed by AT&T.

 FILES
      /etc/passwd                   to find home directories
      /etc/profile                  read to set up system environment
      /etc/suid_profile             security profile
      $HOME/.profile                read to set up user's custom environment




 Hewlett-Packard Company           - 40 -   HP-UX Release 11i: November 2000






 ksh(1)                                                               ksh(1)




      /tmp/sh*                      for here-documents

 SEE ALSO
      cat(1), cd(1), echo(1), env(1), getopts(1), kill(1), pwd(1), read(1),
      test(1), time(1), umask(1), vi(1), dup(2), exec(2), fork(2), gtty(2),
      pipe(2), stty(2), signal(5), umask(2), ulimit(2), wait(2), rand(3C),
      a.out(4), profile(4), environ(5), lang(5), regexp(5).















































 Hewlett-Packard Company           - 41 -   HP-UX Release 11i: November 2000