Options

Bash Unix Shell Scripting:

Chapter 33. Options

Options are settings that change shell and/or script behavior.

The command enables options within a script. At the point in the script where you want the options to take effect, use set -o option-name or, in short form, set -option-abbrev. These two forms are equivalent.

      #!/bin/bash
      set -o verbose
      # Echoes all commands before executing.
      
      #!/bin/bash
      set -v
      # Exact same effect as above.
      
Note

To disable an option within a script, use set +o option-name or set +option-abbrev.

      #!/bin/bash
      set -o verbose
      # Command echoing on.
      command
      ...
      command
      set +o verbose
      # Command echoing off.
      command
      # Not echoed.
      set -v
      # Command echoing on.
      command
      ...
      command
      set +v
      # Command echoing off.
      command
      exit 0
      

An alternate method of enabling options in a script is to specify them immediately following the #! script header.

      #!/bin/bash -x
      #
      # Body of script follows.
      

It is also possible to enable script options from the command line. Some options that will not work with set are available this way. Among these are -i, force script to run interactive.

bash -v script-name

bash -o verbose script-name

The following is a listing of some useful options. They may be specified in either abbreviated form (preceded by a single dash) or by complete name (preceded by a double dash or by -o).

Table 33-1. Bash options

Abbreviation Name Effect
-B brace expansion Enable (default setting = on)
+B brace expansion Disable brace expansion
-C noclobber Prevent overwriting of files by redirection (may be overridden by >|)
-D (none) List double-quoted strings prefixed by $, but do not execute commands in script
-a allexport Export all defined variables
-b notify Notify when jobs running in background terminate (not of much use in a script)
-c ... (none) Read commands from ...
checkjobs   Informs user of any open upon shell exit. Introduced in of Bash, and still "experimental." Usage: shopt -s checkjobs (Caution: may hang!)
-e errexit Abort script at first error, when a command exits with non-zero status (except in or , , )
-f noglob Filename expansion (globbing) disabled
globstar Enables the ** operator ( of Bash). Usage: shopt -s globstar
-i interactive Script runs in interactive mode
-n noexec Read commands in script, but do not execute them (syntax check)
-o Option-Name (none) Invoke the Option-Name option
-o posix POSIX Change the behavior of Bash, or invoked script, to conform to standard.
-o pipefail pipe failure Causes a pipeline to return the of the last command in the pipe that returned a non-zero return value.
-p privileged Script runs as "suid" (caution!)
-r restricted Script runs in restricted mode (see ).
-s stdin Read commands from stdin
-t (none) Exit after first command
-u nounset Attempt to use undefined variable outputs error message, and forces an exit
-v verbose Print each command to stdout before executing it
-x xtrace Similar to -v, but expands commands
- (none) End of options flag. All other arguments are .
-- (none) Unset positional parameters. If arguments given (-- arg1 arg2), positional parameters set to arguments.