17

Мне нравится хранить большую историю, поэтому в моем histappend установлен .bashrc . В большинстве случаев все работает хорошо, история складывается из множества добавляемых оболочек. Тем не менее, время от времени я запускаю новую оболочку и обнаруживаю, что потерял всю историю - и она часто содержит только некоторые команды из последней оболочки для выхода (т.е. это не просто перезапись вместо добавления ). Из-за этого я подозреваю, что это происходит при выходе из оболочки, а не из-за какого-то другого процесса, убивающего файл .bash_history . В поддержку этого вывода у меня в командной строке есть номера команд истории, и я никогда не видел, чтобы они прыгали вниз.

Кто-нибудь когда-нибудь сталкивался с подобной проблемой? Или даже просто есть предложения, как отследить проблему?

4 ответа4

13

Извините, что отвечаю на мой вопрос, но ни один из других ответов на самом деле не решает проблему.

Я наконец-то понял, что это происходит только при закрытии самого gnome-terminal (т.е. file> exit, кнопка 'x', alt+F4) и даже тогда, как правило, только при закрытии нескольких терминалов подряд. Это никогда не происходит при использовании ctrl-D для закрытия оболочки, позволяя терминалу следовать.

Если мне удастся это исправить, я отправлю отчет об ошибке в gnome-терминале. А пока, возможно, это поможет другим людям, которые попали сюда из Google!

10

Не знаю, почему это происходит, но, возможно, вы можете обойти проблему, заставив bash записывать в свой файл истории каждый раз, когда он отображает приглашение:

PROMPT_COMMAND="history -a; history -n"

Это будет записывать (-a) и затем перечитывать (-n) файл истории каждый раз, когда bash запрашивает следующую команду. Дополнительное преимущество: вы получите команду X в оболочке 1 в истории оболочки 2.

3

Мой опыт показал, что оболочки обновляли файл истории во время выхода. Таким образом, первоначальная "история" оболочки зависела от представления самой последней оболочки об истории.

В результате вы можете получать и отправлять команды из истории в зависимости от того, как запускались и останавливались другие оболочки.

1

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

Что-то, что могло бы предотвратить это, состояло бы в том, чтобы сократить файл обратно до 80 строк или скольких команд вы хотите, чтобы история была.

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