- 论坛徽章:
- 15
|
本帖最后由 rdcwayx 于 2012-05-11 10:55 编辑
很好的一个问题。- $- The current shell flags, such as -x and -v.
- - Expands to the current option flags as specified upon invocation, by the set builtin command, or those set by the shell itself (such as the -i option).
复制代码 set [+abefhkmnptuvxBCEHPT] [+o option] [arg ...]
给些例子。- $ echo $-
- himBH
- $ set -x
- $ echo $-
- himxBH
- $ set +x
- $ echo $-
- himBH
- $ bash -r # start another shell with -r set
- $ echo $-
- himrBH
- $ exit
- $ echo $-
- himBH
复制代码 再看一下后面的红色部分,可以帮助理解。
Without options, the name and value of each shell variable are displayed in a format that can be reused
as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. In
posix mode, only shell variables are listed. The output is sorted according to the current locale.
When options are specified, they set or unset shell attributes. Any arguments remaining after option
processing are treated as values for the positional parameters and are assigned, in order, to $1, $2,
... $n. Options, if specified, have the following meanings:
-a Automatically mark variables and functions which are modified or created for export to the envia
ronment of subsequent commands.
-b Report the status of terminated background jobs immediately, rather than before the next primary
prompt. This is effective only when job control is enabled.
-e Exit immediately if a pipeline (which may consist of a single simple command), a subshell coma
mand enclosed in parentheses, or one of the commands executed as part of a command list enclosed
by braces (see SHELL GRAMMAR above) exits with a non-zero status. The shell does not exit if
the command that fails is part of the command list immediately following a while or until keya
word, part of the test following the if or elif reserved words, part of any command executed in
a && or aaaa list except the command following the final && or aaaa, any command in a pipeline but
the last, or if the command's return value is being inverted with !. A trap on ERR, if set, is
executed before the shell exits. This option applies to the shell environment and each subshell
environment separately (see COMMAND EXECUTION ENVIRONMENT above), and may cause subshells to
exit before executing all the commands in the subshell.
-f Disable pathname expansion.
-h Remember the location of commands as they are looked up for execution. This is enabled by default.
-k All arguments in the form of assignment statements are placed in the environment for a command,
not just those that precede the command name.
-m Monitor mode. Job control is enabled. This option is on by default for interactive shells on
systems that support it (see JOB CONTROL above). Background processes run in a separate process
group and a line containing their exit status is printed upon their completion.
-n Read commands but do not execute them. This may be used to check a shell script for syntax
errors. This is ignored by interactive shells.
-o option-name
The option-name can be one of the following:
allexport
Same as -a.
braceexpand
Same as -B.
emacs Use an emacs-style command line editing interface. This is enabled by default when the
shell is interactive, unless the shell is started with the --noediting option. This
also affects the editing interface used for read -e.
errexit Same as -e.
errtrace
Same as -E.
functrace
Same as -T.
hashall Same as -h.
histexpand
Same as -H.
history Enable command history, as described above under HISTORY. This option is on by default
in interactive shells.
ignoreeof
The effect is as if the shell command ``IGNOREEOF=10'' had been executed (see Shell
Variables above).
keyword Same as -k.
monitor Same as -m.
noclobber
Same as -C.
noexec Same as -n.
noglob Same as -f.
nolog Currently ignored.
notify Same as -b.
nounset Same as -u.
onecmd Same as -t.
physical
Same as -P.
pipefail
If set, the return value of a pipeline is the value of the last (rightmost) command to
exit with a non-zero status, or zero if all commands in the pipeline exit successfully.
This option is disabled by default.
posix Change the behavior of bash where the default operation differs from the POSIX standard
to match the standard (posix mode).
privileged
Same as -p.
verbose Same as -v.
vi Use a vi-style command line editing interface. This also affects the editing interface
used for read -e.
xtrace Same as -x.
If -o is supplied with no option-name, the values of the current options are printed. If +o is
supplied with no option-name, a series of set commands to recreate the current option settings
is displayed on the standard output.
-p Turn on privileged mode. In this mode, the $ENV and $BASH_ENV files are not processed, shell
functions are not inherited from the environment, and the SHELLOPTS, BASHOPTS, CDPATH, and GLOa
BIGNORE variables, if they appear in the environment, are ignored. If the shell is started with
the effective user (group) id not equal to the real user (group) id, and the -p option is not
supplied, these actions are taken and the effective user id is set to the real user id. If the
-p option is supplied at startup, the effective user id is not reset. Turning this option off
causes the effective user and group ids to be set to the real user and group ids.
-t Exit after reading and executing one command.
-u Treat unset variables and parameters other than the special parameters "@" and "*" as an error
when performing parameter expansion. If expansion is attempted on an unset variable or paramea
ter, the shell prints an error message, and, if not interactive, exits with a non-zero status.
-v Print shell input lines as they are read.
-x After expanding each simple command, for command, case command, select command, or arithmetic
for command, display the expanded value of PS4, followed by the command and its expanded argua
ments or associated word list.
-B The shell performs brace expansion (see Brace Expansion above). This is on by default.
-C If set, bash does not overwrite an existing file with the >, >&, and <> redirection operators.
This may be overridden when creating output files by using the redirection operator >| instead
of >.
-E If set, any trap on ERR is inherited by shell functions, command substitutions, and commands
executed in a subshell environment. The ERR trap is normally not inherited in such cases.
-H Enable ! style history substitution. This option is on by default when the shell is interaca
tive.
-P If set, the shell does not follow symbolic links when executing commands such as cd that change
the current working directory. It uses the physical directory structure instead. By default,
bash follows the logical chain of directories when performing commands which change the current
directory.
-T If set, any traps on DEBUG and RETURN are inherited by shell functions, command substitutions,
and commands executed in a subshell environment. The DEBUG and RETURN traps are normally not
inherited in such cases.
-- If no arguments follow this option, then the positional parameters are unset. Otherwise, the
positional parameters are set to the args, even if some of them begin with a -.
- Signal the end of options, cause all remaining args to be assigned to the positional parameters.
The -x and -v options are turned off. If there are no args, the positional parameters remain
unchanged.
The options are off by default unless otherwise noted. Using + rather than - causes these options to be
turned off. The options can also be specified as arguments to an invocation of the shell. The current
set of options may be found in $-. The return status is always true unless an invalid option is encouna
tered.
|
|