Чому bash не зберігає команди, які починаються з пробілів?


48

Якщо я виконую послідовність команд типу:

$ ls
$ grep abc file.txt

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

Але якщо я роблю щось подібне:

$ ls
$   grep abc file.txt

де grepпередують пробіли, натискання вгору дає ls, не grep.

Чому це?


Відповіді:


52
echo $HISTCONTROL
ignoreboth

man bash:

ІСТКОНТРОЛ

Список значень, розділених двокрапкою, керує тим, як команди зберігаються у списку історії. Якщо список значень включає в себе ignorespace, рядки, які починаються з пробілу, не зберігаються у списку історії. Значення ignoredupsпричин не призводить до збереження рядків, що відповідають попередньому запису історії. Значення ignorebothскорочення для ignorespaceта ignoredups.


3
і HISTCONTROLвстановлено ignorebothза замовчуванням, що ~/.bashrcнадається debianщонайменше.
Стефан Шазелас

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

1
У Ubuntu 14.04 за замовчуванням є ignorebothтакий, який дратує.
Нік Гаммон

6
Ciro, я припускаю, що це так, що ви можете вводити команду, як, 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.