Configuration is stack based. Options that occur higher on the stack may override earlier options, including those implied by the earlier options. (Note the analogy with command line - later options can override the earlier ones.)

Three configuration <scope>s are managed separately: 'global' (outermost), 'session' and 'command'.  The default is to operate at the 'session' scope.

Changes at the 'session' scope remain active for the rest of the current shell session.

The 'command' scope is not persistent and can be modified only using the global '-c' option.

Options pushed at an inner scope mask the same options pushed at an outer scope, which has the same effect as dropping the options pushed at the outer scope. Options can be masked without pushing them at the inner scope by using '--push-mask' instead of '--push'.

Pushing an option again at the same scope moves it to the top of the stack within that scope.

The shorthand syntax '<name>[=[<value>]]' can be used similarly to how the global '-c' option is used:

    | Shorthand syntax | Equivalent to         |
    |------------------+-----------------------|
    | <name>=<value>   | --push <name> <value> |
    | <name>           | --push <name>         |
    | <name>=          | --push-mask <name>    |
