2

Когда я запускаю history , я получаю список команд. Тем не менее, он не представляется полным, даже в течение определенного периода времени. (Не похоже, что он имеет непрерывный охват прошлых N команд - кажется, что некоторые отсутствуют.) Кроме того, вывод history отличается на разных вкладках терминала. Это потому, что история не записывается на диск, пока вкладка не будет закрыта? Объясняет ли это, почему некоторые команды теряются, потому что они перезаписываются при закрытии вкладок?

Я на OSX 10.8 для чего стоит.

2 ответа2

5

Разные терминалы используют разные экземпляры вашего $SHELL (вероятно, BASH, поскольку вы работаете в OSX). Каждый экземпляр хранит свою собственную историю, которая объединяется в глобальную историю сеанса при выходе из этого конкретного экземпляра BASH.

Вы можете попробовать это, открыв два терминала, выполнив несколько команд, затем закрыв оба терминала и открыв третий. Команды из двух (теперь закрытых) двух предыдущих терминалов теперь будут в вашей истории.

Есть также несколько опций BASH для удаления дублирующих команд, посмотрите на ваш $HOME/.bashrc и проверьте, есть ли у вас такая строка:

export HISTCONTROL=ignoredups

Эта опция говорит BASH не сохранять дубликаты команд. Итак, если вы запустите ls 10 раз, он будет сохранен только один раз.

0

История оболочки существует для каждого случая bash. Он читается при запуске bash и записывается при выходе из bash. Закрытие вкладки принудительно убивает bash, делая его неспособным выписать историю как обычно.

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