shopt
shopt
shopt 命令是 set 命令的一种代替,很多方面都和 set 命令一样,但它增加了很多选项,先看下基本选项和用法
命令格式:
shopt [-psu] [optname …]
选项:
-p 选项来查看 shopt 选项的设置
-u 表示关闭一个选项
-s 表示开启一个选项
看一下执行 shopt 都有哪些选项和系统默认值
yv@yv-virtual-machine:~$ shopt
autocd off
cdable_vars off
cdspell off
checkhash off
checkjobs off
checkwinsize on
cmdhist on
compat31 off
compat32 off
compat40 off
compat41 off
compat42 off
complete_fullquote on
direxpand off
dirspell off
dotglob off
execfail off
expand_aliases on
extdebug off
extglob on
extquote on
failglob off
force_fignore on
globstar off
globasciiranges off
gnu_errfmt off
histappend on
histreedit off
histverify off
hostcomplete off
huponexit off
interactive_comments on
lastpipe off
lithist off
login_shell on
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
nullglob off
progcomp on
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off
cable_vars
如果给cd内置命令的参数不是一个目录,就假设它是一个变量名,变量的值是将要转换到的目录
yv@yv-virtual-machine:~$ shopt -s cdable_vars
yv@yv-virtual-machine:~$ q=/opt
yv@yv-virtual-machine:~$ cd $q
yv@yv-virtual-machine:/opt$
cdspell
cd 命令中目录的细微拼写错误能够得以纠正,检查的错误包括字符错位,缺字符, 重复输入同一字符,如果找到了正确的值,将打印正确的文件名,命令将继续,这个选项只能在交互 shell 中使用
yv@yv-virtual-machine:~$ shopt -s cdspell
yv@yv-virtual-machine:~$ cd /op
/opt
checkhash
如果设置的话,bash 在执行命令前检测散列表中的命令是否存在, 如果一个被散列的命令不再存在,将进行正常的路径搜索
checkwinsize
如果设置的话,bash 在每条命令执行后检测窗口大小,如果需要的话就更新 LINES 和 COLUMNS 的值
cmdhist
如果设置的话, bash 试着将一个多行命令的所有行放到同一个历史条目中。这样使得 多行命令可以容易地重新修改
dotglob
如果设置的话, bash 会把以 " . " 开始的文件名包含在路径名扩展的结果中
execfail
如果设置的话,非交互的 shell 如果不能执行作为参数提供给内建命令 exec 的文件时将不会退出,交互的 shell 在 exec 失败时不会退出
expand_aliases
如果设置的话,别名被扩展,就像上面 ALIASES 中讲到的一样。这个选项在交互 shell 中是默认启用的
extglob
打开扩展的模式匹配特性(正常的表达式元字符来自Korn shell的文件名扩展)
?(pattern-list) - 所给模式匹配0次或1次
*(pattern-list) - 所给模式匹配0次以上包括0次
+(pattern-list) - 所给模式匹配1次以上包括1次
@(pattern-list) - 所给模式仅仅匹配1次
!(pattern-list) - 不匹配括号内的所给模式
histappend
如果设置的话,在 shell 退出时,历史列表将追加到以 HISTFILE 的值为名的文件之后,而不是覆盖文件
histreedit
如果设置的话,并且正在使用 readline, 用户可以重新修改失败的历史替换
histverify
如果设置的话,并且正在使用 readline, 历史替换的结果不会立即传给 shell 解释器。结果行被加载到 readline 编辑缓冲区,允许进行进一步的修改
hostcomplete
如果设置的话,并且正在使用 readline, bash 将试着对正在进行补全的包含 的词进行主机名补全 (参见上面的 READLINE 中的 Completing 段落)。这是默认允许的
huponexit
如果设置的话,在交互的登录 shell 退出时 bash 将向所有作业发出 SIGHUP 信号
interactive_comments
如果设置的话,将允许在交互 shell 中遇到以 # 开头的词时忽略这个词和一行中所有剩余的字符 (参见上面的 COMMENTS 注释),这个选项是默认允许的
lithist
如果设置的话,并且允许了 cmdhist 选项,多行的命令在保存到历史中时将包含新行符,而不是在可能的地方使用分号
login_shell
如果 shell 作为登录 shell 启动,将设置这个选项 (参见上面的 启动(INVOCATION) ),这个值不可修改
mailwarn
如果设置的话,并且 bash 正在检测上次检测以来被存取过的邮件, 将显示 ``The mail in mailfile has been read''(mailfile 中的邮件已被读取)
no_empty_cmd_completion
如果设置的话,并且正在使用 readline, 试图在空行上执行补全时, bash 不会搜索 PATH 来查找可能的补全
nocaseglob
如果设置的话, bash 进行路径扩展时使用大小写不敏感方式匹配文件名(参见上面的 Pathname Expansion 路径扩展)
nullglob
如果设置的话, bash 将允许不匹配任何文件的模式扩展为空字符串而不是它们自身(参见上面的 Pathname Expansion 路径扩展)
progcomp
如果设置的话,将启用可编程补全功能 (参见上面的 Programmable Completion)。 这个选项是默认启用的
promptvars
如果设置的话,提示字符串要经过上面 PROMPTING 中描述的扩展,然后还要经过变量和参数扩展。这个选项是默认启用的
restricted_shell
shell 设置这个选项,如果它是以受限模式启用的 (参见下面的 受限的shell(RESTRICTED SHELL) 章节)。这个值不能修改。在执行启动文件时,它不会被重置,使得启动文件可以 得知 shell 是否是受限的
shift_verbose
如果设置的话,内建命令 shift 在偏移量超过位置参数的个数时打印一条错误消息
sourcepath
如果设置的话,内建命令 source (.) 使用 PATH 中的值来查找包含作为参数给出的文件。这个选项默认是启用的
xpg_echo
如果设置的话,内建命令 echo 默认扩展反斜杠转义序列
希望这篇文章能对你有帮助哦~