2014-12-08 12 views
4

Я знаю, что на днях я ввел команду, но теперь я не могу найти ее с помощью history или .bash_history. Любые идеи, почему это происходит? Я подозреваю, что это связано с использованием нескольких вкладок в моем терминале OS X, и так или иначе история не переносится между вкладками, но я не знаю.Отсутствие команд в истории терминала X X

ответ

3

Начиная с OS X El Capitan 10.11, по умолчанию Bash настроен на сохранение отдельных команд для каждого терминала, поэтому их можно восстановить отдельно для Возобновления.

Каждая отдельная история также добавляется к глобальной истории в ~/.bash_history, когда оболочка завершена. Если вы выйдете из терминала, а затем снова откроете его - с включенным или без возобновления - вы должны обнаружить, что команды из каждого терминала находятся в ~/.bash_history. Если включено возобновление, каждый восстановленный терминал будет содержать только восстановленную историю, но когда вы создадите новый терминал, он начнется с последней глобальной истории.

Поскольку все истории команд добавляются к глобальному файлу ~/.bash_history, вы можете увеличить количество команд, сохраненных путем установки переменной окружения HISTFILESIZE, чтобы последние истории терминалов не выводили другие истории терминалов файла слишком рано. Значение по умолчанию - 500. У меня установлено значение 10 000. Я также установил HISTSIZE в 10 000, чтобы я мог перемещаться по всей истории (в противном случае из файла истории будут прочитаны только последние 500).

Сценарий, который организует отдельные истории команд, находится в /etc/bashrc_Apple_Terminal в OS X El Capitan 10.11 и более поздних версиях. Он содержит обширные комментарии, описывающие, как работает механизм, и как его настроить или отключить.

1

Это происходит со мной все время. Я открываю несколько окон команд, а история сохраняется в том порядке, в котором они закрыты. Команды, которые вы ищете, возможно, были перезаписаны другим командным окном.

+0

Есть ли способ предотвратить это? – meisel

+0

в csh (оболочка, которую я использую, на самом деле tcsh) есть возможность объединиться в истории команд при выходе из оболочки. Он работает, но он медленный, если у вас есть 10 000 строк в вашей истории, как у меня. Googling, похоже, есть способы сделать bash сделать это тоже, но я не так хорошо знаком с bash. – Andras

5

У меня была проблема с моим терминалом. Оказывается, это сохранение новых файлов в папке ~/.bash_sessions. Это часть нового метода управления сессиями bash, представленными с El Capitan, описанными в файле /etc/bashrc_Apple_Terminal. Это подтверждается выступом echo $HISTFILE. Чтобы отключить это поведение, просто запустите touch ~/.bash_sessions_disable. Затем закройте приложение «Терминал» и перезапустите его. Теперь он должен сохранить историю должным образом, что может быть подтверждено снова через echo $HISTFILE. Надеюсь, это поможет!

Смежные вопросы