<aside>
💡 Options are settings that change shell or script behaviour. The set
builtin command can be use to set options. There are two ways to set options either by set -o option-name
or, in short form, set -option-abbrev
****. To disable **an option, use set +o option-name
****or set +option-abbrev
****. To enable option on a script on the command line use, set +o option-name script-name
****or ****set option-abbrev script-name
</aside>
Abbreviation | Name | Effect |
---|---|---|
-B | brace expansion | Enable brace expansion (default setting = on) |
+B | brace expansion | Disable brace expansion |
-C | noclobber | Prevent overwriting of files by redirection (but this 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 jobs upon shell exit. Introduced in version 4 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 until or while loops, if-tests, list constructs) |
-f | noglob | Disable filename expansion (globbing) |
globstar | globbing star-match | Enables the ** globbing operator. Usage: shopt -s globstar |
-i | interactive | Runs a script 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 POSIX standard. |
-o pipefail | pipe failure | Causes a pipeline to return the exit status 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 |
-s | stdin | Read commands from stdin |
-t | onecmd | 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 positional parameters. |
-- | (none) | Unset positional parameters. If arguments given (-- arg1 arg2), positional parameters set to arguments. |
<aside> 💡 Read more about bash options
</aside>
<aside>
💡 The shopt
builtin command allows you to change additional shell optional behavior.
</aside>
Option | Description |
---|---|
-o | Restrict the values of <OPTNAME…> to only those also known by the set builtin |
-p | Print all shell options and their current value. Default. |
-q | Quiet mode. Set exit code if named option is set. For multiple options: TRUE if all options are set, FALSE otherwise |
-s | Enable (set) the shell options named by <OPTNAME…> or list all enabled options if no names are given |
-u | Disabe (unset) the shell options named by <OPTNAME…> or list all disabled options |
if no names are given |
<aside>
🛠 shopt [-pqsu] [-o] <OPTNAME...>
</aside>
<aside> 💡 According to the option table, if only -s or -u are specified without any option names, only the currently enabled (-s) or disabled (-u) options are printed.
</aside>
<aside>
💡 When listing options, the exit code is TRUE
(0), if all options are enabled, FALSE
otherwise.
When setting/unsetting an option, the exit code is TRUE
unless the named option doesn't exitst.
</aside>
shopt -s nullglob #Example to enable nullglob option
Option name | Description |
---|---|
autocd | If set, a command name that is the name of a directory is executed as if it were the argument to the cd command. |
cdspell | If set, minor errors in the spelling of a directory component in a cd command will be corrected. The errors checked for are transposed characters, a missing character, and one character too many. If a correction is found, the corrected file name is printed, and the command proceeds. |
checkjobs | If set, Bash lists the status of any stopped and running jobs before exiting an interactive shell. If any jobs are running, this causes the exit to be deferred until a second exit is attempted without an intervening command. The shell always postpones exiting if any jobs are stopped. |
dirspell | If set, Bash will perform spelling corrections on directory names to match a glob. |
dotglob | If set, Bash includes filenames beginning with a . (dot) in the results of https://wiki.bash-hackers.org/syntax/expansion/globs. |
nullglob | If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves. |
failglob | If set, patterns which fail to match filenames during filename expansion result in an expansion error. |
nocaseglob | If set, Bash matches filenames in a case-insensitive fashion when performing filename expansion. |
globstar | If set, the pattern ‘**’ used in a filename expansion context will match all files and zero or more directories and subdirectories. If the pattern is followed by a ‘/’, only directories and subdirectories match. |
<aside> 💡 Here is an exhaustive lists of all the additional options
</aside>