26

Моя история bash загадочным образом перестала работать, и я понятия не имею, как это исправить. Вот как выглядит мой .bashrc:

HISTSIZE=500
HISTFILESIZE=500
HISTFILE=$HOME/.bash_history

Однако, когда я запускаю echo $HISTFILE он печатает /Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew .

Я владелец файла .bash_history, поэтому я не очень уверен, как бы я решил эту проблему.

Спасибо!

6 ответов6

20

Терминал назначает каждому сеансу терминала уникальный идентификатор и передает его через переменную среды TERM_SESSION_ID, чтобы программы, работающие в терминале, могли сохранять / восстанавливать специфическое для приложения состояние при выходе и перезапуске Терминала с включенным Возобновлением.

Новая папка (~/.bash_sessions/) используется для хранения файлов HISTFILE и .session, которые являются уникальными для сессий.

Во время запуска оболочки файл сеанса выполняется. Старые файлы периодически удаляются.

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

Вы можете отключить это поведение и поделиться одной историей, установив

export SHELL_SESSION_HISTORY=0

Если HISTTIMEFORMAT определен, история сеансов отключена по умолчанию (подробнее см. В /private /etc /bashrc_Apple_Terminal)

Механизм сохранения / восстановления отключен, если существует следующий файл:

~/.bash_sessions_disable

Apple уже изменила свое поведение со времени выхода El Capitan, поэтому лучше прочитать об этом здесь less /private/etc/bashrc_Apple_Terminal

6

Я заметил нечто подобное после обновления El Capitan. Простое добавление файла .bash_sessions_disable в ваш домашний каталог отключает новые сеансы bash, и .bash_history снова используется.

Эта ветка Reddit имеет больше информации и дальнейших ссылок.

4

Вы можете решить проблему с RVM, обновившись до последней версии RVM или выполнив это:

  echo 'shell_session_update' > $HOME/.bash_logout

См. Https://github.com/rvm/rvm/issues/3540 для получения дополнительной информации.

3

Этот ответ из ветки Reddit спас меня:

Это, вероятно, RVM, предотвращающий выходную "зацепку" для запуска bash_sessions. Если вы закомментируете следующую строку в вашем .bash_profile, она должна работать.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
0

Я видел эту проблему на Высокой Сьерре. Каким-то образом мой собственный .bash_history стал владельцем root и даже не имел разрешений на чтение для других пользователей (когда содержимое домашнего каталога просматривалось с помощью ls -al)

В этом файле .bash_history не было никаких последствий, поэтому я создал sudo rm .bash_history, а затем коснулся .bash_history, чтобы создать новый.

Теперь все вроде хорошо

0

Если это Mac, то я полагаю, что его оболочкой для входа в систему по умолчанию является bash и он запускает .profile вместо .bashrc . Итак, вы редактировали не тот файл.

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