14.11. bash Options
14.11.1 Shell Invocation Options
When the shell is started using the bash command, it can take options to modify its behavior. There are two types of options: single-character options and multicharacter options. The single-character options consist of a single leading dash followed by a single character. The multicharacter options consist of two leading dashes and any number of characters. Multicharacter options must appear before single-character options. An interactive login shell normally starts up with –i (start an interactive shell), –s (read from standard input), and –m (enable job control). See Table 14.8.
Table 14.9. bash (Versions Prior to 2.x) Shell Invocation OptionsOption | Meaning |
---|
–c string | Commands are read from string. Any arguments after string are assigned to positional parameters, starting at $0. | –D | A list of double-quoted strings, preceded by a $, are printed to standard output. These strings are subject to language translation when the current locale is not C or POSIX. The –n option is implied; no commands will be executed. | –i | Shell is in the interactive mode. TERM, QUIT, and INTERRUPT are ignored. | –s | Commands are read from standard input and allows the setting of positional parameters. | –r | Starts a restricted shell. | – | Signals the end of options and disables further option processing. Any arguments after –– or – are treated as filenames and arguments. | –login | Causes bash to be invoked as a login shell. | –nobraceexpansion | Curly brace expansion is turned off. | –nolineediting | When bash is running interactively, does not use the Readline library. | –noprofile | When starting up, bash does not read the initialization files /etc/profile, ~/.bash_profile, ~/.bash_login, or ~/.profile. | –posix | Changes the behavior of bash to match the POSIX standard, if otherwise it wouldn't. | –quiet | Displays no information at shell startup, the default. | –rcfile file | If bash is interactive, uses this intialization file instead of ~/.bashrc. | –verbose | Turns on verbose; same as –v. | –version | Displays version information about this bash shell and exits. |
14.11.2 The set Command and Options
The set command can be used to turn shell options on and off, as well as for handling command-line arguments. To turn an option on, the dash (–) is prepended to the option; to turn an option off, the plus sign (+) is prepended to the option. See Table 14.10 for a list of set options.
Example 14.78.
1 $ set -f
2 $ echo *
*
3 $ echo ??
??
4 $ set +f
Table 14.10. The Built-In set Command OptionsName of Option | Shortcut Switch | What It Does |
---|
allexport | –a | Automatically marks new or modified variables for export from the time the option is set until unset. | braceexpand | –B | Enables brace expansion, and is a default setting. | emacs | | For command-line editing, uses the emacs built-in editor, and is a default setting. | errexit | –e | If a command returns a nonzero exit status (fails), exits. Not set when reading initialization files. | histexpand | –H | Enables ! and !! when performing history substitution, and is a default setting.[a] | history | | Enables command-line history; on by default.[a] | ignoreeof | | Disables EOF (Ctrl-D) from exiting a shell; must type exit. Same as setting shell variable, IGNOREEOF=10. | keyword | –k | Places keyword arguments in the environment for a command.[a] | interactive-comments | | For interactive shells, a leading # is used to comment out any text remaining on the line. | monitor | –m | Allows job control. | noclobber | –C | Protects files from being overwritten when redirection is used. | noexec | –n | Reads commands, but does not execute them. Used to check the syntax of scripts. Not on when running interactively. | noglob | –d | Disables pathname expansion (i.e., turns off wildcards). | notify | –b | Notifies user when background job finishes. | nounset | –u | Displays an error when expanding a variable that has not been set. | onecmd | –t | Exits after reading and executing one command.[a] | physical | –P | If set, does not follow symbolic links when typing cd or pwd. The physical directory is used instead. | posix | | Shell behavior is changed if the default operation doesn't match the POSIX standard. | privileged | –p | When set, the shell does not read the .profile or ENV file and shell functions are not inherited from the environment; automatically set for setuid scripts. | posix | | Changes the default behavior to POSIX 1003.2. | verbose | –v | Turns on the verbose mode for debugging. | vi | | For command-line editing, uses the vi built-in editor. | xtrace | –x | Turns on the echo mode for debugging. |
EXPLANATION
The f option is turned on, disabling filename expansion. The asterisk is not expanded. The question marks are not expanded. The f is turned off; filename expansion is enabled.
14.11.3 The shopt Command and Options
The shopt (bash 2.x) command can also be used to turn shell options on and off. See Table 14.11.
|