unset [ -fmv ] [ -n ] name ...
       Each named parameter is unset.  Local parameters remain local even
       if unset; they appear unset within scope, but the previous value
       will still reappear when the scope ends.

       Individual elements of associative array parameters may be unset
       by using subscript syntax on name, which should be quoted (or the
       entire command prefixed with noglob) to protect the subscript from
       filename generation.

       If the -m flag is specified the arguments are taken as patterns
       (should be quoted) and all parameters with matching names are
       unset.  Note that this cannot be used when unsetting associative
       array elements, as the subscript will be treated as part of the
       pattern.

       The -v flag specifies that name refers to parameters. This is the
       default behaviour.  If the -n option is supplied, and name is a a
       named reference, name will be unset rather than the variable it
       references.

       unset -f is equivalent to unfunction.  The -n option has no effect
       with -f.
