为什么bash不存储以空格开头的命令?


48

如果我执行一系列命令,例如:

$ ls
$ grep abc file.txt

然后使用向上箭头键获取上一个,终端将显示最后一个cmd(在grep此处)

但是,如果我做这样的事情:

$ ls
$   grep abc file.txt

grep前面加空格的情况下,按会给出ls,而不是grep

为什么是这样?


Answers:


52
echo $HISTCONTROL
ignoreboth

男子猛击:

历史控制

用冒号分隔的值列表,用于控制如何在历史记录列表中保存命令。如果值列表包含ignorespace,则以空格字符开头的行不会保存在历史记录列表中。值的值ignoredups导致不保存与先前的历史记录条目匹配的行。的值ignorebothignorespace和的简写ignoredups


3
并至少HISTCONTROL设置为ignoreboth默认~/.bashrc设置debian
斯特凡Chazelas

1
什么是用例ignorespace
Ciro Santilli新疆改造中心法轮功六四事件

1
在Ubuntu 14.04中,默认设置很ignoreboth烦人。
尼克·加蒙

6
西罗,我认为是这样,您可以输入类似命令echo "drop database mydb" | mysql -u root -pPassword,而不必将其保存在历史记录中。
杰里米

2
对于Mac用户,HISTCONTROL未设置为任何内容,因此您需要将其添加到bash_profile
chrismarx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.