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 默认扩展反斜杠转义序列

posted @ 2021-04-30 10:01  -桃枝夭夭-  阅读(663)  评论(0编辑  收藏  举报