Dlaczego bash nie przechowuje poleceń rozpoczynających się spacjami?

48

Jeśli wykonam sekwencję poleceń, takich jak:

$ ls
$ grep abc file.txt

a następnie użyj klawisza strzałki w górę, aby uzyskać poprzedni, terminal pokaże ostatnie cmd (które jest greptutaj)

Ale jeśli zrobię coś takiego:

$ ls
$   grep abc file.txt

gdzie greppoprzedza się spacjami, naciśnięcie w górę daje ls, a nie grep.

Dlaczego to?

piaskowiec
źródło
Dalsze działania: Dlaczego bash ma opcję HISTCONTROL = ignorowanie?
Gilles „SO- przestań być zły”

Odpowiedzi:

52
echo $HISTCONTROL
ignoreboth

bash człowieka:

HISTCONTROL

Rozdzielona dwukropkami lista wartości kontrolujących sposób zapisywania poleceń na liście historii. Jeśli lista wartości zawiera ignorespace, wiersze rozpoczynające się znakiem spacji nie są zapisywane na liście historii. Wartość ignoredupspowoduje, że wiersze pasujące do poprzedniego wpisu historii nie zostaną zapisane. Wartość ignorebothjest skrótem dla ignorespacei ignoredups.

Hauke ​​Laging
źródło
3
i HISTCONTROLjest ustawiony ignorebothna domyślnie ~/.bashrcpodany przez debianco najmniej.
Stéphane Chazelas
1
Jaki jest przypadek użycia ignorespace?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
W Ubuntu 14.04 domyślnie jest ignorebothto trochę denerwujące.
Nick Gammon
6
Ciro, zakładam, że możesz wprowadzać polecenia jak echo "drop database mydb" | mysql -u root -pPasswordi nie zapisywać ich w historii.
Jeremy
2
Dla użytkowników komputerów Mac HISTCONTROL nie jest ustawiony na nic, więc musisz dodać go do swojego bash_profile lub podobnego - unix.stackexchange.com/questions/115917/…
chrismarx