56. shopt
shopt
代表 shell 选项。
要查看所有 shell 选项及其当前状态(无论该选项是启用还是禁用),请执行以下操作:
$ shopt
autocd off
cdable_vars off
cdspell off
checkhash off
checkjobs off
checkwinsize on
..
要查看特定 shell 选项(例如 cdspell
)的当前状态,请执行以下操作:
$ shopt cdspell
cdspell off
使用 shopt -s
启用(设置)特定的 shell 选项,如下所示
$ shopt -s cdspell
$ shopt cdspell
cdspell on
使用 shopt -u
禁用(取消设置)特定的 shell 选项,如下所示
$ shopt -u checkwinsize
$ shopt checkwinsize
checkwinsize off
要使用设置/取消设置语法(shopt -s
或 shopt -u
)查看所有可用的 shell 选项及其当前状态,请使用shopt -p
。
当您想要从一个系统中获取 shell 选项并复制它们时,这会很有帮助。
只需在一个系统上复制 shopt -p
的输出,然后将其粘贴到另一个系统,或者将 shopt -p
输出重定向到您在另一个系统上执行的文件。
例如:
$ shopt -p
shopt -u autocd
shopt -u cdable_vars
shopt -s cdspell
shopt -u checkhash
shopt -u checkjobs
shopt -u checkwinsize
..
某些 shopt
选项也可以使用 set
内置命令进行控制。
shopt -o
显示所有也可以使用 set
命令控制的 shell 选项。
$ shopt -o
allexport off
braceexpand on
emacs off
errexit off
errtrace off
functrace off
hashall on
..
下表显示了所有 shopt
选项及其含义。 默认情况下,所有这些选项均处于关闭状态(红色字体显示的选项除外)。
shopt option | description |
---|---|
autocd |
仅使用目录名称 cd 到目录。 即不需要输入 cd /etc ,只需输入 /etc 。 |
cdable_vars |
将 cd 命令的参数视为变量。 junk = /tmp ,cd junk 将更改为/tmp 目录。 |
cdspell |
小拼写错误会自动更正。 即cd /temp 将自动执行 cd /tmp 。 |
checkhash |
首先检查命令在哈希表中是否可用(在检查
$PATH
变量之前)。 |
checkjobs |
当作业正在运行时,第一个 exit 命令将列出所有正在运行的作业,第二个 exit 命令将退出 shell 。 |
checkwinsize |
检查窗口大小并相应更新
LINES
和
COLUMNS
变量。 |
cmdhist |
多行命令存储在同一个历史条目中。 |
compat31 |
Bash 3.1 版本兼容模式。 |
compat32 |
Bash 3.2 版本兼容模式。 |
compat40 |
Bash 4.0 版本兼容模式。 |
dirspell |
将对目录名称进行较小的拼写更正以进行全局匹配。 |
dotglob |
路径名扩展将包括以 . (点)。 |
execfail |
exec 命令失败时 shell 不会退出 |
expand_aliases
|
别名已扩展。 对于交互式 shell,此默认值是打开的;对于非交互式 shell,此默认值是关闭的。 |
extdebug |
启用扩展调试选项。 |
extglob |
启用扩展模式匹配。 |
extquote
|
对于参数扩展,执行 $'var' 和 $"var" 引用。 |
failglob |
显示文件全局匹配失败的错误消息。 |
force_fignore
|
在单词完成期间忽略
FIGNORE
shell 变量中可用的后缀。 |
globstar |
启用递归通配符 (* * ) 。 |
gnu_errfmt |
以 GNU 错误消息格式显示错误消息。 |
histappend |
历史列表被附加而不是被覆盖到历史文件中。 |
histreedit |
重新编辑失败的历史记录替换。 |
histverify |
通过在编辑器中加载历史替换来验证历史替换,而不是直接执行它。 |
hostcomplete
|
Bash 补全也会补全主机名 |
huponexit |
退出交互式 shell 时向所有作业发送
SIGHUP
。 |
interactive_comments |
能够在交互式 shell 中使用 # 进行注释。 |
lithist
|
lithist+cmdhist 选项将多行命令保存到历史记录中,并酌情嵌入换行符。 |
lithist
|
值无法更改。 当 bash 是登录 shell 时设置此选项。 |
mailwarn |
如果自 bash 上次检查以来已检查过邮件文件,则显示邮件文件已被检查的消息。 |
no_empty_cmd_completion
|
对于完全是空命令,不要尝试搜索
PATH
中的目录。 |
nocaseglob |
对于路径名扩展,通过忽略大小写来匹配文件名 |
nocasematch |
执行 case 或 [[ 命令时,通过忽略大小写来匹配模式。 |
nullglob |
不匹配任何内容的模式将扩展为 null 。 |
progcomp
|
启用可完全编程。 |
promptvars
|
提示字符串将进行参数扩展、算术扩展、命令替换和引号删除。 |
restricted_shell |
值无法更改。 当 bash 在受限模式下运行时,值设置为 "on" 。 |
shift_verbose |
当移位命令必须移动多于可用的位置参数时显示错误消息 |
sourcepath
|
source 命令将在
PATH
变量中的目录中搜索给定的文件名。 |
xpg_echo |
echo 命令将展开反斜杠(\ )转义字符。 |