首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

bash参考手册之4(shell内建命令)续六

2013-10-16 
bash参考手册之四(shell内建命令)续六4.3.2 内建命令Shopt此内建命令改变额外的shell的可选行为。shoptshop

bash参考手册之四(shell内建命令)续六

4.3.2 内建命令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选项。




热点排行