Відповідь:
Все, що вам потрібно зробити, це встановити HISTSIZE
у вашому баш-профілі ( ~/.bash_profile
). Ви можете залишити HISTFILESIZE
невстановленим . Це дозволить налаштувати як історію пам'яті, так і файлову історію.
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
Пояснення, додаткова інформація.
Проблема полягає в тому, що HISTFILESIZE встановлює лише максимальну історію, що зберігається у файлі під час запуску сеансу. HISTSIZE - це те, що визначає, скільки рядків буде збережено в кінці сеансу. Якщо HISTFILESIZE більше , ніж ваш HISTSIZE, ви ніколи не будете бачити більше , ніж ваш HISTSIZE , тому що файл отримує переписаний з командами HISTSIZE ( якщо тільки ви встановите історію Дописувати, але це окрема тема: шукати histappend
в оболонці вбудованої команди для цього) .
З цієї причини ви не бачите ефекту. Якщо за замовчуванням HISTSIZE (можливо, 500) ваш файл історії завжди перезаписується останніми командами $ HISTSIZE. Все старіше (що потенційно може збільшити список за $ HISTSIZE) буде видалено.
У більшості випадків немає необхідності встановлювати HISTFILESIZE незалежно від HISTSIZE.
HISTSIZE визначає, скільки рядків буде записано у файл історії. Список команд обрізається після виходу, перед записом у файл історії, зберігаючи N останніх рядків. За замовчуванням цей список перезаписує файл історії.
HISTFILESIZE визначає, наскільки великим може бути файл історії (у рядках). Після запуску файл обрізається, зберігаючи N останніх рядків. Крім того, файл історії потенційно врізається, коли встановлюється HISTFILESIZE.
Нарешті, хоча він видається недокументованим, BASH встановлює HISTFILESIZE на основі HISTSIZE, якщо HISTSIZE встановлений під час запуску. Я спробував це на macOS та кількох різновидах Ubuntu, і поведінка послідовна. Якщо ви встановите HISTSIZE у файлі запуску ( не через командний рядок будь-якими способами), HISTFILESIZE буде встановлений у відповідність. (Спробуйте самостійно: встановіть HISTSIZE на якесь довільно велике значення в .bash_profile, вийдіть і запустіть новий термінал, echo $HISTSIZE $HISTFILESIZE
і тоді ви знайдете їх відповідність.)
Як результат, немає ніяких причин торкатися HISTFILESIZE, якщо ви не бажаєте різних значень, а випадки використання, які мають різні значення, рідкісні (і зазвичай передбачають додаткові параметри налаштування історії, щоб отримати щось корисне).