10

Возможный дубликат:
Можно ли объединить файлы истории в bash?

Я использую Ubuntu Server 9.10, и я хотел бы иметь возможность просматривать мою историю Bash для более чем одного сеанса терминала. Т.е. мои последние 200 команд или около того, даже если я вышел из системы между ними.

Когда я использую history я просто вижу все команды из моего реального сеанса терминала. Как я могу увидеть больше истории команд из Bash? Есть ли какие-то конкретные настройки для bash, которые я должен изменить по сравнению со значениями по умолчанию в Ubuntu?

У меня нет файла ~/.bash_history . Но у меня есть ~/.bashrc с HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups и HISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

ОБНОВЛЕНИЕ: я сейчас пытаюсь Ubuntu Server 10.10 в VirtualBox. Если я просто отключу VirtualBox без команды выключения, то при следующей загрузке команды из последнего сеанса не сохраняются в файле истории.

Команды сохраняются только в том случае, если я выключаю машину с помощью команды выключения. Например, отключение -P 0.

Это должно быть причиной моей проблемы. Поэтому я должен выяснить, как чаще сохранять историю команд. Например, после каждой команды.

4 ответа4

5

Ты можешь использовать

history -a

немедленно добавить историю в памяти в файл истории. Одна терминальная сессия не может видеть другую, пока это не будет сделано или другой не завершен.

Ты можешь использовать

history 200 | less

чтобы увидеть это количество записей.

В дополнение к HISTSIZE смотрите запись в справочной странице Bash, касающуюся HISTFILESIZE .

4

После выхода история добавляется в файл ~/.bash_history . Загляни туда.

По умолчанию он запомнит ваши последние 500 команд. Если вы хотите сохранить больше, установите переменную HISTSIZE в ~/.bashrc .

Я также добавляю ignoredups в HISTCONTROLHISTCONTROL=$HISTCONTROL:ignoredup). Это позволяет дублировать последовательные команды для сохранения только один раз.

Взгляните на man 1 bash чтобы узнать, что еще можно рассказать об истории.

1

История bash обычно загружается, когда запускается оболочка, и сохраняется при нормальном выходе. Вы можете использовать history -a и history -n чтобы переопределить это, но не автоматически, если вы не используете $PROMPT_COMMAND или что-то подобное.

0

Саной, это действительно должно "просто работать"; Я не думаю, что должно быть что-то особенное, что вам нужно сделать, чтобы включить это. Похоже, что-то мешает нормальному ходу событий.

Я бы посмотрел в /etc /profile, /etc /bashrc (или, возможно, /etc/bash.bashrc в соответствии с некоторыми источниками), ~ /.bash_profile, ~ /.bashrc, ~ /.bash_login, ~ /.bash_logout, чтобы увидеть если есть что-то, что может повлиять на историю (возможно, grep -i hist в каждом из приведенных выше файлов).

... В частности, мне интересно, есть ли в ~/.bash_logout что-то, что удаляет файл.

Или, возможно, что-то переопределяет переменную $HOME ?

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