shell内建命令Shopt


shell内建命令Shopt
 
此内建命令改变额外的shell的可选行为。
 
shopt
 
  shopt [-pqsu] [-o] [optname …]
 
切换那些用来控制shell的各种可选的行为的变量的值。不带选项,或使用-p选项,则显示所有可设置的选项的列表,同时表明该选项是否被设置。 -p选项以可重用为输入的形式来显示输出。其他选项有以下含义:
 
 
-s
 
启用每个optname。(set)
 
-u
 
关闭每个optname。(unset)
 
-q
 
抑制正常输出;返回状态表示optname是否启用。当有-q选项,且如果有多个optname参数时,若所有optname被启用,则返回值是零;否则返回非零值。
 
-o
 
限制optname的值,仅可以使用内建命令set的-o选项所定义的值。(见内建命令set)
 
如果使用-s或者-u,且没有optname参数,则显示结果的范围仅限于那些启用或关闭的相应选项。
 
除非特别说明,shopt选项默认是关闭的。
 
列出选项时,如果所有optname都是启用状态,则返回值是0,否则是非零值。在设置或取消选项时,返回状态是零,除非某个optname不是有效的shell选项。
 
 
 
shopt的选项列表如下:
 
autocd
 
如果设置的话,某个目录的名字被当做cd命令的参数执行。此选项仅在交互式shell中使用。
 
cdable_vars
 
如果设置的话,内建命令cd的不是目录名的参数,被当做变量名,该变量的值就是要被切换到的目录。
 
cdspell
 
如果设置,cd命令的目录部分的小的拼写错误将得到更正。这些错误包括颠倒的字符,缺少的字符,和多余的一个字符。如果能找到校正后的结果,则校正后的路径被打印出来,并执行命令。此选项仅用于交互式shell。
 
checkhash
 
如果设置,Bash在执行该命令前,在哈希表中检查是否存在该命令。如果在哈希表中不存在,则执行一个正常的路径搜索。
 
checkjobs
 
如果设置,Bash在退出交互shell前,列出所有停止的和正在运行的作业的状态。如果有任何作业正在运行,这将导致退出的时间推迟到第二次没有干预命令的退出(参见作业控制)。如果有任何作业被停止,shell总是推迟退出。
 
checkwinsize
 
如果设置,Bash在每个命令后,检查窗口大小,如果必要的话,更新LINES和COLUMNS的值。
 
cmdhist
 
如果设置,Bash在同一个历史实体里面保存一个多行命令的所有行的内容。这样便于重新编辑多行命令。
 
compat31
 
如果设置,Bash改变它的行为以符合3.1版本,条件命令操作符‘=~’被引号包括的参数的方式。
 
compat32
 
如果设置,Bash改变它的行为以符合3.2版本,当使用‘[[’条件命令的'<' 和 '>'操作符时,区域特定字符串比较的方式。bash-4.0之前版本的Bash使用ASCII定序和strcmp(3);bash-4.1及之后的版本使用当前区域设置的定序和strcoll(3)。
 
 compat40
 
如果设置,Bash改变它的行为以符合4.0版本,当使用‘[[’条件命令的'<' 和 '>'操作符时,区域特定字符串比较的方式(见上一个项目),以及对中断一个命令列表的影响。
 
compat41
 
如果设置,Bash在POSIX模式时,将位于双引号参数扩展中的单引号当做特殊字符。单引号必须匹配(偶数个),单引号之间的字符被认为是引号包围的。这是POSIX模式4.1版本的行为。其他默认的Bash的行为仍然和以前的版本一样。
 
dirspell
 
如果设置,当输入的目录名不存在时,Bash将在输入过程中自动修改拼写。
 
dotglob
 
如果设置,Bash在文件名扩展的结果中包含以‘.’开头的文件名。
 
execfail
 
如果设置,非交互shell在不能执行内建命令exec的参数所指定的文件时,将不会退出。如果exec失败,交互式shell不退出。
 
expand_aliases
 
如果设置,所有别名以下述“别名”节的描述扩展。交互式shell中,此选项默认启用。
 
extdebug
 
如果设置,启用调试器可用的行为:
 
1.declare内建命令的-F选项,显示作为参数提供的每个对应的函数名的源文件和行号。
 
2.如果使用DEBUG陷阱运行的命令返回一个非零值,下一个命令被跳过且不执行。
 
3.如果使用DEBUG陷阱运行的命令返回一个值2,并且shell在子过程中(是使用.或者source命令执行)执行,则      模拟一个对return的调用。
 
4.BASH_ARGC 和 BASH_ARGV 按照他们的描述更新。(参见Bash变量)
 
5.启用函数跟踪:命令替换,shell函数,和使用( command )调用的子shell继承DEBUG和RETURN陷阱。
 
6.启用错误跟踪:命令替换,shell函数,和使用( command )调用的子shell继承ERR陷阱。
 
extglob
 
如果设置,启用上述的扩展模式匹配功能。(见模式匹配)
 
extquote
 
如果设置,在双引号中的 ${parameter} 扩展中的$'string' 和 $"string" 被执行引号扩展。此选项默认启用。
 
failglob
 
如果设置,文件名扩展时发生的模式匹配失败会引发扩展错误。
 
force_fignore
 
如果设置,当执行单词补全时,由FIGNORE指定的那些后缀的shell变量将忽略单词,即使被忽略的单词是唯一的补全候补。关于FIGNORE,请查看bash变量章节。该选项默认启用。
 
globstar
 
如果设置,在文件名扩展中使用的模式“**”将匹配所有文件和0个或多个目录和子目录。如果模式以‘/’结尾,则仅仅匹配目录和子目录。
 
gnu_errfmt
 
如果设置,shell错误信息将按照标准GNU错误信息格式输出。
 
histappend
 
如果设置,当shell退出时,命令历史列表将追加到由变量HISTFILE设定的文件中,而不是覆盖该文件。
 
histreedit
 
如果设置,将使用Readline,用户将有机会重新编辑失败的命令历史替换。
 
histverify
 
如果设置,将使用Readline,命令历史替换的结果不会立即传递给shell解释器。而是被加载到Readline缓冲区,以允许将来修改。
 
hostcomplete
 
如果设置,将使用Readline,当单词含有‘@’时, Bash会尝试执行主机名完成。(请参看“命令完成”)。该选项默认启用。
 
huponexit
 
如果设置,当交互shell退出时,Bash将发送SIGHUP到所有作业。(请参看“信号”)
 
interactive_comments
 
在交互shell中,以‘#’开头的单词将导致该单词及该行该单词之后的所有字符都被忽略。该选项默认开启。
 
lastpipe
 
如果设置,并且作业控制未激活,则运行管道的最后一个命令的shell不在当前shell环境的后台执行。
 
lithist
 
如果设置,并且cmdhist选项被设置了,则多行命令被保存到历史中时,包含换行符,而不是使用分号代替。
 
login_shell
 
如果shell是从登录shell启动的,则该shell设置此选项。(见“调用 Bash”)该值不可更改。
 
mailwarn
 
如果设置,并且Bash用来检测邮件的文件,在上次检测之后再次被存取时,则显示“The mail in mail file has been read”。
 
no_empty_cmd_completion
 
如果设置,并且使用了Readline,Bash在空行上不再试图从PATH中搜索可用的命令完成。
 
nocaseglob
 
如果设置,执行文件名扩展时,Bash以大小写不敏感方式匹配文件名。
 
nocasematch
 
如果设置,执行case或者 [[ 条件命令时,Bash以大小写不敏感方式匹配模式。
 
nullglob
 
如果设置,Bash允许不匹配任何文件的文件名模式被扩展为一个空字符串,而不是模式本身。
 
progcomp
 
如果设置,则可编程自动完成工具被激活。(见“可编程自动完成”)。此选项默认激活。
 
promptvars
 
如果设置,则提示符字符串在扩展后,还要执行参数扩展,命令替换,算数扩展和引号去除。(见打印提示符)。此选项默认激活。
 
restricted_shell
 
如果shell以限制模式被启动,则设置此选项。(见“限制shell”)。该值不可更改。启动文件被执行时,不重置此选项,以允许启动文件能够发现shell是否是限制的。
 
shift_verbose
 
如果设置,当shift计数器超过位置参数个数时,shift内建命令打印一条错误信息。
 
sourcepath
 
如果设置,source内建命令使用PATH的值,去寻找作为参数的文件名所在的目录。此选项默认激活。
 
xpg_echo
 
如果设置,echo内建命令默认扩展反斜杠转义序列。
 
如果所有optnames都激活了,则列出选项的命令返回状态为0,否则为非零值。在设置或者取消选项的设置时返回状态是0,除非optname不是有效的shell选项。

相关内容

    暂无相关文章