3

Вот моя оболочка:

$ $SHELL --version | head -1
GNU bash, version 4.1.7(2)-release (i386-apple-darwin10.3.0)

Вот мои настройки, связанные с историей:

export HISTCONTROL=ignoredups:erasedups
export HISTSIZE=100000
export HISTFILESIZE=100000
shopt -s histappend
shopt -s histverify ## edit a recalled history line before executing
shopt -s histreedit ## reedit a history substitution line if it failed

## Save the history after each command finishes
## (and keep any existing PROMPT_COMMAND settings)
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

Обновить

Я смог вызвать усечение с помощью sudo -s . При входе в оболочку sudo история усекается до 500 записей. Какие rc-файлы просматривает sudo -s чтобы я мог убедиться, что он загружает мои настройки истории?

2 ответа2

3

Есть еще одна переменная, которую нужно проверить: HISTFILESIZE

От man bash:

HISTFILESIZE
Максимальное количество строк, содержащихся в файле истории. Когда этой переменной присваивается значение, файл истории усекается, если необходимо, путем удаления самых старых записей, чтобы содержать не более этого количества строк. Значение по умолчанию составляет 500. Файл истории также усекается до этого размера после записи при выходе из интерактивной оболочки.

Редактировать:

Проверьте файлы запуска, чтобы убедиться, что они обрабатываются правильно и в правильном порядке, а переменные установлены в правильном и не перезаписываются.

Я предпочитаю не исходить из одного "официального" файла запуска из другого, а иметь общий код в третьем "локальном" файле, который создается каждым из "официальных" файлов, и позволить оболочке определять, когда они обрабатываются (интерактивно). или нет, войдите или нет). Имейте в виду, что в некоторых дистрибутивах эти файлы настроены так, что один источником является другой, поэтому вы должны убедиться, что вы не настроили бесконечный цикл.

Если вы используете эти файлы истории больше для ведения журнала, чем для повторного использования предыдущих команд, взгляните на мои функции ведения журнала и посмотрите, соответствуют ли они вашим потребностям. Вы все еще можете использовать историю - вам просто не нужно будет хранить ее так много.

Смотрите комментарии ниже для более подробной информации.

0

И ты, кажется, довольно уверен, что это был не ты сам (случайно) это удалил ... Вы единственный пользователь на этом компьютере?

Так что это очень необычно. Убедитесь, что никто не вмешивается в вашу историю bash_. Может быть, вы можете получить вдохновение здесь: http://everything2.com/title/Protect+against+deleted+.bash_history+files

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .