有人知道为什么默认情况下bash仍启用历史记录替换吗?我.bashrc
已经加入set +H
了很多年,但其他一些人仍被该功能所困扰。
鉴于几乎每个人都在使用具有复制粘贴功能的终端,并且使用readline
库编译的bash 和默认情况下仅在交互式shell中启用了历史替换,是否真的有理由完全使用该功能?即使默认情况下所有外壳程序都禁用了此脚本,也不会破坏现有脚本。
如果您不知道为什么历史替换被破坏,请尝试以下操作:
$ set +H # disable feature history substitution
$ echo "WTF???!?!!?"
WTF???!?!!?
$ set -H # enable feature history substitution
$ echo "WTF???!?!!?"
echo WTF???echo WTF???!?!!?
WTF???echo WTF???!?!!?
(很明显,如果默认情况下所有脚本都禁用了该功能,并且存在在执行之前验证结果的功能,则该功能存在重大问题shopt -s histverify
。)
也可以看看:
&
?为什么我需要转义或引用包含一个文件名?
?有些用户界面认为这是一个问题。
!$
每天使用几次,也!!
经常使用。我必须承认我没有使用其他历史记录替换,但是如果我多年来使用的Shell的默认行为突然改变,我肯定会很不满意。
ls -l foo/bar/baz/weeble.cpp
起来更快less !$
。