Geo*_*xon 7 bash standards posix set sh
几个小时前我试图回答一个问题,我认为这个问题在bash POSIX模式中显示出一个有点模糊的错误.我匆匆忙忙地告诉我不是这样.这个矛盾的答案,明确地说这不是一个错误,被选为正确的答案.
所以我一直在梳理bash文档,我仍然会得到非常相同的印象,所以我想我应该问.
我的(涉嫌)错误:
set -o histexpand (这通常是隐含的)
set -o posix
echo "#!/"
应该,好吧,回声#!/.(它在任何其他shell中都有).但是在bash中,它会打印到标准输出
!/: event not found
然后返回0.
所以在我看来,bash隐含set -o histexpand在极少数情况下违反了POSIX标准,并没有让位set -o posix.
set -o posix读取文档:
Change the behavior of Bash where the default operation differs from the POSIX standard ... This is intended to make Bash behave as a strict superset of that standard.
而且我一直认为这意味着这个选项set在它们相互矛盾时应该取代其他选项?这似乎也不是48个列举的差异之一.
这不是这种情况吗?我错过了什么?
从Bash的POSIX模式参考我会期待你看到的行为-它并不该列表历史号码(境外的任何地方说PS1和PS2扩展)将与区别对待posix集.此外,由于其他人说这不是一个错误,我猜"超集"的含义是,只要没有特定于Bash的设置,shell就会按照POSIX标准运行.
有趣的是,即使您运行bash --noprofile --norc --posix某些特定于Bash的设置,默认情况下也会启用:
bash-4.2$ set -o | grep 'on$'
braceexpand on
emacs on
hashall on
histexpand on
history on
interactive-comments on
monitor on
posix on
Run Code Online (Sandbox Code Playgroud)
POSIX Shell命令语言文档中没有提到这些(我先查看了它们的简介man bash),并且interactive-comments在任何地方都没有提到.
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |