set命令
功能:设置shell脚本的选项和位置参数的值,同时改变其运行环境,该环境是执行脚本的那个shell环境,其作用范围是本地,即当前用户的当前shell。
改变shell的属性值和位置参数的值或者展示shell变量的名字和值。其影响的shell是执行set命令的shell。
-a: 为export标记修改或者创建的变量
-b:后台进程结束,立刻通知
-e:如果一个命令以非0状态退出,则立刻退出
-f:禁止使用通配符作为文件名扩展
-h:记录命令的位置
-k:为命令把关键词参数放置在环境中(即将参数值放置在执行该命令的shell环境中)
-m:开启job控制
-n:读取命令,但是不执行命令
-o:选项名
根据选项名来设置set命令的特性
allexport same as -a
braceexpand same as -B
emacs use an emacs-style line editing interface
errexit same as -e
errtrace same as -E
functrace same as -T
hashall same as -h
histexpand same as -H
history enable command history
ignoreeof the shell will not exit upon reading EOF
interactive-comments
allow comments to appear in interactive commands
keyword same as -k
monitor same as -m
noclobber same as -C
noexec same as -n
noglob same as -f
nolog currently accepted but ignored
notify same as -b
nounset same as -u
onecmd same as -t
physical same as -P
pipefail the return value of a pipeline is the status of
the last command to exit with a non-zero status,
or zero if no command exited with a non-zero status
posix change the behavior of bash where the default
operation differs from the Posix standard to
match the standard
privileged same as -p
verbose same as -v
vi use a vi-style line editing interface
xtrace same as -x
-p(小写):在此模式,$ENV文件被处理,不能从环境中继承 ,
shell函数.如果是有效用户ID而不是实用户组则自动启动.关闭此选项将使得有效用户和组IDs设置实用户和组IDs。
-t:读取命令并执行之后就退出。-u:对待非可选选项时,如果是一个unset var,也就是说这不是一个内部提前设置的变量,则当做错误来处理,会报错。
-v:当输入行被读取时,打印shell输入行
-x:当命令执行时,打印他们的参数
-B:shell允许花括号扩展,默认开启
-C:如果一个文件已存在,则在使用重定向时不会被覆盖 。
-E:由shell函数继承ERR陷阱
-H:使用!风格的历史替代(当shell交互时,在默认情况下,此选项有效)
-P:如果设置此参数,当执行改变目录命令cd时,不遵循符号链接,而是使用实际的目录
如果在选项后没有参数,不设置位置参数.否则,即使一些参数以a选项开始,也要把位置参数设置为argument- 结束选项的信号,将引发其余的参数被赋值到位置参数中(-x和-v选项被关闭.如果没有argument,位置参数将保留未改变的参数)
-T:DEBUG和RETURN陷阱由shell函数继承
--:分配任何保留的参数到位置参数上。如果不存在保留参数,位置参数就不会被设置。
-:分配任意的保留参数给位置参数。-x和-v选项被关闭。
只要参数合法,都会返回成功。