Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Проблема с history набранных команд в эмуляторе терминала  (Прочитано 234 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dot-mitsu

  • Автор темы
  • Активист
  • *
  • Сообщений: 250
    • Просмотр профиля
Народ, помогите пожалуйста советом. Давно заметил такую странность, что если открываешь несколько эмуляторов терминала по Ctrl+Alt+T, но в каждом из них запоминается отдельно история набранных команд. Например я набрал команды в третьем открытом эмуляторе терминала, то в следующий раз в history нет этой команды. Нужно открыть ещё 2 эмулятора терминала, чтобы посмотреть команду. Можно как-то сделать чтобы история общая хранилась?

Оффлайн ARTGALGANO

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1815
    • Просмотр профиля
да, если  откроете два терминала, что-то в них сделаете, а потом закроете, то история сохранится только от последнего закрытого.
[/size]исправить, добавить в ~/.bachrc, или если глобально в /etc/bash.bashrc
[/size]shopt -s histappend

Оффлайн F12

  • Старожил
  • *
  • Сообщений: 1842
    • Просмотр профиля
Dot-mitsu, вся история хранится в файле .bash_history, который лежит в хомяке, но пишется она туда только после выхода из терминала.

Например, ты открыл по Ctrl+Alt+T два окна эмуляторов терминала, и одновременно в любом текстовом редакторе открыл для просмотра файл .bash_history, в одном из открытых терминалов выполнил, скажем, команду lsb_release -a, а в другом uname -a, обе команды отработали, каждая в своем окне, но при этом в .bash_history ничего не изменилось. Теперь выйдем из одного эмулятора терминала (причем не важно как, хоть по Ctrl+D, хоть командой exit, хоть просто закрыв окно) и тут же в конец файла .bash_history будет дописана команда, которая выполнялась именно в этом эмуляторе, и до его закрытия хранилась в памяти, при этом во втором, все еще открытом эмуляторе, этой команды пока видно не будет, т.к. он работает только с содержимым .bash_history, которое в нем было на момент открытия именно этого экземпляра эмулятора плюс команды выполненные в нем. Если в этот момент открыть новое, ТРЕТЬЕ, окно эмулятора терминала, то он будет видеть только содержимое .bash_history без команд выполнявшихся во ВТОРОМ (все еще открытом), а если Второй закрыть, то его команды тут же будут дописаны в .bash_history, но ТРЕТИЙ их не увидит, зато если теперь открыть ЧЕТВЕРТЫЙ, то в нем они будут...

В общем, как-то так ::)

Пользователь добавил сообщение 24 Декабрь 2016, 11:44:13:
да, если  откроете два терминала, что-то в них сделаете, а потом закроете, то история сохранится только от последнего закрытого
а если закроете оба, то история сохранится от обоих, но не втой последовательности как команды выполнялись, а втой как закрывались окна терминалов...

Пользователь добавил сообщение 24 Декабрь 2016, 11:55:47:
И к стати сказать, файл .bashrc не хранит историю, а всего лишь определяет поведение командной оболочки  :coolsmiley:
« Последнее редактирование: 24 Декабрь 2016, 11:55:47 от F12 »

Оффлайн ARTGALGANO

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1815
    • Просмотр профиля
F12,  чтоб в history записывались все набранные команды сразу, в basrc добавляем
shopt -s hisappend , т.к по дефолту отключено.
man bash-builtins

Оффлайн F12

  • Старожил
  • *
  • Сообщений: 1842
    • Просмотр профиля
ARTGALGANO, таки да, туда много чего можно понадобавить, но мы же тут про настройки bash в Ubuntu по умолчанию говорим... разве нет? :)

Оффлайн ARTGALGANO

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1815
    • Просмотр профиля
F12, так  дефолт для большинства задач вполне устраивает, но иногда нужно больше.
а вот пропустил еще это
PROMPT_COMMAND="history -a"


 

Страница сгенерирована за 0.057 секунд. Запросов: 24.