Почему bash не хранит команды, начинающиеся с пробелов?


49

Если я выполняю последовательность команд, таких как:

$ ls
$ grep abc file.txt

а затем используйте клавишу со стрелкой вверх, чтобы получить предыдущий, терминал покажет последний cmd (который grepздесь)

Но если я сделаю что-то вроде этого:

$ ls
$   grep abc file.txt

где grepпредшествует пробел, нажатие вверх дает ls, а не grep.

Почему это?


Ответы:


53
echo $HISTCONTROL
ignoreboth

человек Баш:

HISTCONTROL

Список значений, разделенных двоеточиями, управляющий тем, как команды сохраняются в списке истории. Если список значений включает в себя ignorespace, строки, начинающиеся с пробела, не сохраняются в списке истории. Значение ignoredupsприводит к тому, что строки, соответствующие предыдущей записи истории, не будут сохранены. Значение ignorebothявляется сокращением для ignorespaceи ignoredups.


3
и HISTCONTROLустанавливается ignorebothв значение по умолчанию, ~/.bashrcпредоставляемое по debianкрайней мере.
Стефан Шазелас

1
Какой вариант использования ignorespace?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
В Ubuntu 14.04 по умолчанию это ignorebothраздражает.
Ник Гэммон

6
Сиро, я полагаю, это так, что ты можешь вводить команду как echo "drop database mydb" | mysql -u root -pPasswordи не сохранять ее в истории.
Джереми

2
Для пользователей Mac HISTCONTROL ничего не установлен, поэтому вам нужно добавить его в свой bash_profile или аналогичный - unix.stackexchange.com/questions/115917/…
chrismarx
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.