Shell | type set |
zsh | set is a shell builtin |
bash | set is a shell builtin |
dash | set is a special shell builtin |
tcsh | set is a shell builtin |
mksh | set is a special shell builtin |
pkdksh | set is a special shell builtin |
set
命令用于打开
或者关闭
Bash中的某些特性。
set //查看所有的变量和函数
set -option... //打开option
set +option... //关闭option
set -o optionName... //打开optionName
set +o optionName... //关闭optionName
set -o //列出所有选项的状态
option | optionName | 默认值 | 说明 |
---|---|---|---|
a | allexport | + | |
b | notify | + | |
B | braceexpand | - | - 开启大括号的一些特殊用法+ 关闭大括号的一些特殊用法 |
C | noclobber | + | |
e | errexit | + | 命令的执行结果不为0 就直接exit 。 这样能避免错误像滚雪球一样,不知道到底哪里出错了。 |
E | errtrace | + | |
f | noglob | + | |
h | hashall | - | - 执行的外部命令 先去哈希表 中查找它的完整路径,然后就用此完整路径的命令去执行。+ 执行的外部命令 每次都去PATH 环境变量中查找。 |
H | histexpand | - | - 允许通过!historyNumber 的方式快捷的执行history 中第historyNumber 个命令。+ 不允许通过!historyNumber 的方式快捷的执行history 中第historyNumber 个命令。 |
k | keyword | + | |
m | monitor | - | |
n | noexec | + | |
p | privileged | + | |
P | physical | + | |
t | onecmd | + | |
u | nounset | + | |
v | verbose | + | - 打印出执行的每个命令,用于调试,排查问题+ 不打印执行的命令 |
x | xtrace | + | |
emacs | - | ||
vi | + | ||
history | - | - 执行的命令会 被记录在history 中+ 执行的命令不会 被记录在history 中 | |
ignoreeof | + | ||
pipefail | + | ||
posix | + | ||
interactive-comments | - | - 在交互模式 下,可以 输入注释,输入的注释被忽略+ 在交互模式 下,不可以 输入注释,一旦输入注释,会提示#xxx: command not found |
set
命令不带任何参数的时候,会列出所有的变量
和函数
。
打开option
。
示例:
set -e
关闭option
。
示例:
set +e
大多数的optionName
都有对应的option
。 所以,此选项相当于set -option
。
示例:
set -o errexit
大多数的optionName
都有对应的option
。 所以,此选项相当于set +option
。
示例:
set +o errexit
-o
后没有带任何的optionName
,表示列出所有的optionName
对应的状态。
示例:
过滤出所有被打开的选项:
set -o | grep -w on
运行效果如下:
$-
变量中记录着set
命令中的哪些option
被打开, 也记录了bash命令中的某些参数被使用了。
在交互模式
下,默认的echo $-
是himBHs
,这几个字母的对应关系:
B
➝ set -B
h
➝ set -h
H
➝ set -H
m
➝ set -m
i
➝ bash -i
s
➝ bash -s
在脚本模式
下,默认的echo $-
是hB
。