set [ {+|-}options | {+|-}o [ option_name ] ] ... [ {+|-}A [ name ] ]
    [ arg ... ]
       Set the options for the shell and/or set the positional parameters,
       or  declare and set an array.  If the -s option is given, it causes
       the specified arguments to be sorted before assigning them  to  the
       positional  parameters  (or to the array name if -A is used).  With
       +s sort arguments in descending order.   For  the  meaning  of  the
       other flags, see zshoptions(1).  Flags may be specified by name us-
       ing  the -o option. If no option name is supplied with -o, the cur-
       rent option states are printed:  see the description of setopt  be-
       low  for  more information on the format.  With +o they are printed
       in a form that can be used as input to the shell.

       If the -A flag is specified, name is set to an array containing the
       given args; if no name is specified, all  arrays  are  printed  to-
       gether with their values.

       If  +A  is  used and name is an array, the given arguments will re-
       place the initial elements of that array; if no name is  specified,
       all arrays are printed without their values.

       The  behaviour  of  arguments  after  -A name or +A name depends on
       whether the option KSH_ARRAYS is set.  If it is not set, all  argu-
       ments  following  name are treated as values for the array, regard-
       less of their form.  If the option is set, normal option processing
       continues at that point; only regular arguments are treated as val-
       ues for the array.  This means that

              set -A array -x -- foo

       sets array to `-x -- foo' if KSH_ARRAYS is not set,  but  sets  the
       array to foo and turns on the option `-x' if it is set.

       If  the  -A flag is not present, but there are arguments beyond the
       options, the positional parameters are set.  If the option list (if
       any) is terminated by `--', and there are no further arguments, the
       positional parameters will be unset.

       If no arguments and no `--' are given, then the names and values of
       all parameters are printed on the standard output.  If the only ar-
       gument is `+', the names of all parameters are printed.

       For historical reasons, `set -' is treated as `set +xv' and `set  -
       args'  as  `set  +xv -- args' when in any other emulation mode than
       zsh's native mode.
