ubuntu 16上的bash:set-e不在子shell中继承

ubuntu 16上的bash:set-e不在子shell中继承,bash,debugging,ubuntu,exit-code,fail-fast,Bash,Debugging,Ubuntu,Exit Code,Fail Fast,当我运行这个命令时 set -e; echo $(echo "$-"); 我得到himBH作为输出。我希望输出中包含字母e。发生什么事了 我使用的是Ubuntu 16.04.1 LTS GNU bash,版本4.3.46(1)-发行版(x86_64-pc-linux-GNU)命令替换不会继承errexit选项,除非您处于POSIX模式或使用heritage\u errexitshell选项(添加到bash4.4) 命令替换不会继承errexit选项,除非您处于POSIX模式或使用inherit

当我运行这个命令时

set -e; echo $(echo "$-");
我得到
himBH
作为输出。我希望输出中包含字母
e
。发生什么事了

我使用的是Ubuntu 16.04.1 LTS
GNU bash,版本4.3.46(1)-发行版(x86_64-pc-linux-GNU)

命令替换不会继承
errexit
选项,除非您处于POSIX模式或使用
heritage\u errexit
shell选项(添加到
bash
4.4)


命令替换不会继承
errexit
选项,除非您处于POSIX模式或使用
inherit\u errexit
shell选项(添加到
bash
4.4)

set-e
是。。。有争议的是,它的行为在不同的shell版本中有所不同,并且常常非常令人惊讶。考虑阅读。<代码> SET-E <代码>是…有争议的是,它的行为在不同的shell版本中有所不同,并且常常非常令人惊讶。考虑阅读。
192% bash -ec 'echo "$(echo "$-")"'
hBc
192% bash --posix -ec 'echo "$(echo "$-")"'
ehBc
192% bash -O inherit_errexit -ec 'echo "$(echo "$-")"'  # 4.4+
ehBc