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.

Option Description


Causes the specified arguments to be sorted before assigning them to the positional parameters (or to the array name if -A is used).


Sort arguments in descending order.


Flags may be specified by name using the -o option. If no option name is supplied with -o, the current option states are printed.


Printed in a form that can be used as input to the shell.


The name is set to an array containing the given arg s; if no name is specified, all arrays are printed together with their values.


If name is an array, the given arguments will replace 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 arguments following name are treated as values for the array, regardless of their form. If the option is set, normal option processing continues at that point; only regular arguments are treated as values for the array. This means that

set -A array -x -- foo

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 argument is +, the names of all parameters are printed.