Ответ:
Все, что вам нужно сделать, это установить HISTSIZE
в вашем профиле bash ( ~/.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, если вы не хотите использовать другие значения, а варианты использования с разными значениями встречаются редко (и, как правило, включают больше параметров настройки истории, чтобы получить что-то полезное).