The value of $SHELLOPTS is not always updated correctly after returning
from a function that modifies options after using `local -'.

For example:

    fun() { local -; set -u; }; fun
    [[ $- == *u* ]]; echo $?                        # 1
    [[ :$SHELLOPTS: == *:nounset:* ]]; echo $?      # 0

This seems to be the case for the following set of options:
interactive-comments, keyword, monitor, noclobber, noglob, nolog, notify,
nounset, onecmd, physical, pipefail, privileged, verbose, xtrace

While it works correctly for:
allexport, braceexpand, emacs, errexit, errtrace, functrace, hashall,
histexpand, history, ignoreeof, noexec, posix, vi

Reply via email to