• 本页内容

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 -sshopt -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 = /tmpcd 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 命令将展开反斜杠(\)转义字符。