欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Linux】一步一步学Linux——shopt命令(214)

程序员文章站 2022-07-12 13:23:24
...

00. 目录

01. 命令概述

shopt命令用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。

02. 命令格式

用法:shopt [-pqsu] [-o] [选项名 ...]

03. 常用选项

选项:
	-o        限制 OPTNAME 为定义用于`set -o' 的选项
	-p        打印每个 shell 选项并标注它的状态。
	-q        抑制输出
	-s        启用(设定)每个 OPTNAME 选项
	-u        禁用(反设定)每个 OPTNAME 选项

04. 参考示例

4.1 显示当前所有可以设置的shell操作选项

[[email protected] ~]$ shopt
autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
checkwinsize    on
cmdhist         on
compat31        off
compat32        off
compat40        off
compat41        off
direxpand       off
dirspell        off
dotglob         off
execfail        off
expand_aliases  on
extdebug        off
extglob         on
extquote        on
failglob        off
force_fignore   on
globstar        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
[[email protected] ~]$ 

4.2 显示所有的配置选项

[[email protected] ~]# shopt -p
shopt -u autocd
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -u checkjobs
shopt -s checkwinsize
shopt -s cmdhist
shopt -u compat31
shopt -u compat32
shopt -u compat40
shopt -u compat41
shopt -u direxpand
shopt -u dirspell
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extdebug
shopt -s extglob
shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -u globstar
shopt -u gnu_errfmt
shopt -s histappend
shopt -u histreedit
shopt -u histverify
shopt -u hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lastpipe
shopt -u lithist
shopt -s login_shell
shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
shopt -u nullglob
shopt -s progcomp
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
shopt -u xpg_echo
[[email protected] ~]# 

4.3 查看打开的配置选项

[[email protected] ~]# shopt -s
checkwinsize    on
cmdhist         on
expand_aliases  on
extglob         on
extquote        on
force_fignore   on
histappend      on
interactive_comments    on
login_shell     on
progcomp        on
promptvars      on
sourcepath      on
[[email protected] ~]# 

4.4 查看关闭的配置选项

[[email protected] ~]# shopt  -u
autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
compat31        off
compat32        off
compat40        off
compat41        off
direxpand       off
dirspell        off
dotglob         off
execfail        off
extdebug        off
failglob        off
globstar        off
gnu_errfmt      off
histreedit      off
histverify      off
hostcomplete    off
huponexit       off
lastpipe        off
lithist         off
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
restricted_shell        off
shift_verbose   off
xpg_echo        off
[[email protected] ~]# 

4.5 开启cd拼写检查

[[email protected] ~]# shopt -s cdspell
[[email protected] ~]# shopt | grep cdspell
cdspell         on
[[email protected] ~]# 

4.6 打印cdspell设置

[[email protected] ~]# shopt -p cdspell
shopt -s cdspell
[[email protected] ~]# 

4.7 禁用cd拼写检查

[[email protected] ~]# shopt -u cdspell 
[[email protected] ~]# shopt | grep cdspell
cdspell         off
[[email protected] ~]# 

05. 参数说明

cdable_vars

如果给cd内置命令的参数不是一个目录,就假设它是一个变量名,变量的值是将要转换到的目录

cdspell

纠正cd命令中目录名的较小拼写错误.检查的错误包括颠倒顺序的字符,遗漏的字符以及重复的字符.如果找到一处需修改之处,正确的路径将打印出,命令将继续.只用于交互式shell

checkhash

bash在试图执行一个命令前,先在哈希表中寻找,以确定命令是否存在.如果命令不存在,就执行正常的路径搜索

checkwinsize

bash在每个命令后检查窗口大小,如果有必要,就更新LINES和COLUMNS的值

cmdhist

bash试图将一个多行命令的所有行保存在同一个历史项中.这是的多行命令的重新编辑更方便

dotglob

Bash在文件名扩展的结果中包括以点(.)开头的文件名

execfail

如果一个非交互式shell不能执行指定给exec内置命令作为参数的文件,它不会退出.如果exec失败,一个交互式shell不会退出

expand_aliases

别名被扩展.缺省为打开

extglob

打开扩展的模式匹配特性(正常的表达式元字符来自Korn shell的文件名扩展)

histappend

如果readline正被使用,用户有机会重新编辑一个失败的历史替换

histverify

如果设置,且readline正被使用,历史替换的结果不会立即传递给shell解释器.而是将结果行装入readline编辑缓冲区中,允许进一步修改

hostcomplete

如果设置,且readline正被使用,当正在完成一个包含@的词时bash将试图执行主机名补全.缺省为打开

huponexit

如果设置,当一个交互式登录shell退出时,bash将发送一个SIGHUP(挂起信号)给所有的作业

interactive_comments

在一个交互式shell中.允许以#开头的词以及同一行中其他的字符被忽略.缺省为打开

lithist

如果打开,且cmdhist选项也打开,多行命令讲用嵌入的换行符保存到历史中,而无需在可能的地方用分号来分隔

mailwarn

如果设置,且bash用来检查邮件的文件自从上次检查后已经被访问,将显示消息”The mail in mailfile has been read”

nocaseglob

如果设置,当执行文件名扩展时,bash在不区分大小写的方式下匹配文件名

nullglob

如果设置,bash允许没有匹配任何文件的文件名模式扩展成一个空串,而不是他们本身

promptvars

如果设置,提示串在被扩展后再进行变量和参量扩展.缺省为打开

restricted_shell :

如果shell在受限模式下启动就设置这个选项.该值不能被改变.当执行启动文件时不能复位该选项,允许启动文件发现shell是否受限

shift_verbose :

如果该选项设置,当移动计数超出位置参量个数时,shift内置命令将打印一个错误消息

sourcepath :

如果设置,source内置命令使用PATH的值来寻找作为参数提供的文件的目录.缺省为打开

source :

点(.)的同义词

06. 附录

参考:【Linux】一步一步学Linux系列教程汇总