Як працює команда історії?


8

Коли я набираю будь-яку команду в терміналі, вона не з’являється у моєму ~/.bash_historyфайлі, поки я не вийду з сеансу.

Крім того, коли я вручну редагую свій ~/.bash_historyфайл (наприклад, я видаляю останні три команди), коли я historyйого ввожу, він все ще показує команди, які я видалив з ~/.bash_historyфайлу. Тільки коли я закриваю сеанс і знову входжу, вони зникають.

Як синхронізується мій ~/.bash_historyфайл і historyкоманда?


2
це в оперативній пам'яті ... Де зберігається історія баша?
Zanna

"Коли я набираю будь-яку команду в терміналі" Насправді не вірно. Якщо ви поставите пробіл перед командою за замовчуванням, вона не збереже цю команду.
Rinzwind

@Rinzwind поведінку збереження команди, навіть якщо в ній є пробіл, можна змінити, відредагувавши значення змінної середовища HISTCONTROL.
sys0dm1n

@ sys0dm1n "за замовчуванням"
Rinzwind

Відповіді:


10

Коли ви відкриваєте термінал bash, він завантажує вміст ~/.bash_historyта створює історію активної оболонки (в оперативній пам'яті), додаючи до неї кожну команду, виконану в цій оболонці - і лише їй, а не файлу.

Тільки коли ви закриєте баш-термінал, його історія додається до вашого ~/.bash_historyфайлу.


Варіанти history:

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

Параметри ~/.bashrcфайлу

Якщо ви хочете змінити цю поведінку, щоб тимчасова історія зберігалася ~/.bash_historyбезпосередньо після виконання команди, додайте цей рядок:

PROMPT_COMMAND="history -a"

Якщо ви також хочете, щоб кожен термінал автоматично завантажував ~/.bash_historyфайл після кожного виконання команди, замість цього додайте цей рядок:

PROMPT_COMMAND="history -a; history -c; history -r"

Якщо ви хочете виключити збереження певних команд (наприклад, все, що починається з sudoі cat), додайте цей рядок:

HISTIGNORE="sudo*:cat*"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.