set命令
1.0、参考
1.1、set命令的类型
Shelltype set
zshset is a shell builtin
bashset is a shell builtin
dashset is a special shell builtin
tcshset is a shell builtin
mkshset is a special shell builtin
pkdkshset is a special shell builtin
1.2、set命令的作用

set命令用于打开或者关闭Bash中的某些特性。

1.3、set命令的使用格式
set            //查看所有的变量和函数

set -option... //打开option
set +option... //关闭option

set -o optionName... //打开optionName
set +o optionName... //关闭optionName

set -o               //列出所有选项的状态
optionoptionName默认值说明
aallexport+
bnotify+
Bbraceexpand-
-开启大括号的一些特殊用法
+关闭大括号的一些特殊用法
Cnoclobber+
eerrexit+命令的执行结果不为0就直接exit。 这样能避免错误像滚雪球一样,不知道到底哪里出错了。
Eerrtrace+
fnoglob+
hhashall-
-执行的外部命令先去哈希表中查找它的完整路径,然后就用此完整路径的命令去执行。
+执行的外部命令每次都去PATH环境变量中查找。
Hhistexpand-
-允许通过!historyNumber的方式快捷的执行history中第historyNumber个命令。
+不允许通过!historyNumber的方式快捷的执行history中第historyNumber个命令。
kkeyword+
mmonitor-
nnoexec+
pprivileged+
Pphysical+
tonecmd+
unounset+
vverbose+
-打印出执行的每个命令,用于调试,排查问题
+不打印执行的命令
xxtrace+
emacs-
vi+
history-
-执行的命令被记录在history
+执行的命令不会被记录在history
ignoreeof+
pipefail+
posix+
interactive-comments-
-交互模式下,可以输入注释,输入的注释被忽略
+交互模式下,不可以输入注释,一旦输入注释,会提示#xxx: command not found
1.3.1、set

set命令不带任何参数的时候,会列出所有的变量函数

1.3.2、set -option

打开option

示例:

set -e
1.3.3、set +option

关闭option

示例:

set +e
1.3.4、set -o optionName

大多数的optionName都有对应的option。 所以,此选项相当于set -option

示例:

set -o errexit
1.3.5、set +o optionName

大多数的optionName都有对应的option。 所以,此选项相当于set +option

示例:

set +o errexit
1.3.6、set -o

-o后没有带任何的optionName,表示列出所有的optionName对应的状态。

示例:

过滤出所有被打开的选项:

set -o | grep -w on

运行效果如下:

1.3.7、echo $-

$-变量中记录着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