有没有办法将 bash shell 选项导出到 subshel​​l?

Mic*_*rux 5 bash shell

我在当前 shell 中设置了 bash 选项(例如 shopt -e autocd)并希望将此选项导出/复制到新创建的子 shell。有没有办法做到这一点?

Bash 版本是:GNU bash,版本 4.3.11(1)-release (x86_64-pc-linux-gnu)

例子:

$shopt -s autocd
$shopt autocd
autocd          on
$bash
$shopt autocd
autocd          off
Run Code Online (Sandbox Code Playgroud)

Jad*_*zia 5

通过使用存储 shell 选项的相应 shell 变量 BASHOPTS,您可以导出许多类似于 shell 变量的 shell 选项:

export BASHOPTS
Run Code Online (Sandbox Code Playgroud)

以下是 Bash 手册页的一些信息:

BASHOPTS:以冒号分隔的已启用 shell 选项列表。列表中的每个单词都是 shopt 内置命令的 -s 选项的有效参数(请参阅下面的 SHELL BUILTIN COMMANDS)。BASHOPTS 中出现的选项是 shopt 报告的选项。如果此变量在 bash 启动时的环境中,则列表中的每个 shell 选项将在读取任何启动文件之前启用。该变量是只读的。

有一个密切相关的变量 SHELLOPTS,但是这似乎只有在直接调用 bash(例如通过bash)而不是通过sh 时才能很好地工作,因为sh启用了 Bash 的 POSIX 模式。这是有关此问题的更多信息。