Bash.Builtin.Set (Bash v0.6.0)

Copy Markdown View Source

set [--abefhkmnptuvxBCHP] [-o option] [arg ...]

This should update the special variable $- with the enabled flags, eg:

$ echo $- himBHs

This should update the special variable SHELLOPTS with the enabled flags, eg:

$ echo $SHELLOPTS braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor

Options:

  • -a - Mark variables which are modified or created for export.
  • -b - Notify of job termination immediately.
  • -e - Exit immediately if a command exits with a non-zero status.
  • -f - Disable file name generation (globbing).
  • -h - (Default on) Remember the location of commands as they are looked up.
  • -k - All assignment arguments are placed in the environment for a command, not just those that precede the command name.
  • -m - (Default on) Job control is enabled.
  • -n - Read commands but do not execute them.
  • -p - Turned on whenever the real and effective user ids do not match. Disables processing of the $ENV file and importing of shell functions. Turning this option off causes the effective uid and gid to be set to the real uid and gid.
  • -t - Exit after reading and executing one command.
  • -u - Treat unset variables as an error when substituting.
  • -v - Print shell input lines as they are read.
  • -x - Print commands and their arguments as they are executed.
  • -B - (Default on) the shell will perform brace expansion
  • -C - If set, disallow existing regular files to be overwritten by redirection of output.
  • -E - If set, the ERR trap is inherited by shell functions.
  • -H - (Unsupported) Enable ! style history substitution. This flag is on by default when the shell is interactive.
  • -P - If set, do not follow symbolic links when executing commands such as cd which change the current directory.
  • -T - If set, the DEBUG trap is inherited by shell functions.
  • - - Assign any remaining arguments to the positional parameters. The -x and -v options are turned off.
  • -o option-name Set the variable corresponding to option-name:
    • allexport - same as -a
    • braceexpand - same as -B
    • emacs - use an emacs-style line editing interface (Unsupported)
    • errexit - same as -e
    • errtrace - same as -E
    • functrace - same as -T
    • hashall - same as -h
    • histexpand - same as -H
    • history - enable command history
    • ignoreeof - the shell will not exit upon reading EOF
    • interactive-comments - allow comments to appear in interactive commands (Unsupported)
    • keyword - same as -k
    • monitor - same as -m
    • noclobber - same as -C
    • noexec - same as -n
    • noglob - same as -f
    • nolog - currently accepted but ignored
    • notify - same as -b
    • nounset - same as -u
    • onecmd - same as -t
    • physical - same as -P
    • pipefail - the return value of a pipeline is the status of the last command to exit with a non-zero status, or zero if no command exited with a non-zero status
    • posix - change the behavior of bash where the default operation differs from the 1003.2 standard to match the standard
    • privileged - same as -p
    • verbose - same as -v
    • vi - use a vi-style line editing interface (Unsupported)
    • xtrace - same as -x

Using + rather than - causes these flags to be turned off. The flags can also be used upon invocation of the shell. The current set of flags may be found in $-. The remaining n ARGs are positional parameters and are assigned, in order, to $1, $2, .. $n. If no ARGs are given, all shell variables are printed.

Reference: https://cgit.git.savannah.gnu.org/cgit/bash.git/plain/builtins/set.def?h=bash-5.3