Как отключить сеансы Bash в OS X El Capitan

казалось бы, новая функция в OS X El Capitan (10.11 Beta) это сеансы Bash (терминальные сессии). Теперь у меня есть ~/.bash_sessions каталог с файлами истории и my HISTFILE и HISTIGNORE переменные окружения переопределяются. Как отключить все эти функции?

3 ответов


Если вы запускаете новый сеанс Bash вручную (т. е. bash -xl), вы можете посмотреть, что запускается при входе в систему.

вы увидите следующую строку на выходе:

....
+++ '[' '!' -e /Users/username/.bash_sessions_disable ']'

вы можете создать .bash_sessions_disable файл в вашем домашнем каталоге, чтобы отключить эту функцию.


это поведение определяется в /etc/bashrc_Apple_Terminal. Он содержит комментарии к документации, описывающие, что он делает и как его настроить.

вы можете отключить функцию истории команд для каждого терминала сеанса, установив SHELL_SESSION_HISTORY=0 в своем ~/.bashrc сценарий, как описано здесь:

вы можете отключить это поведение и поделиться одной историей, установив SHELL_SESSION_HISTORY до 0. Существуют некоторые общие пользовательские настройки которые организуют обмен новыми командами между запущенными снаряды Управление историей в каждом приглашении, и они обычно включают 'shopt-s histappend'; поэтому, если опция оболочки histappend включено, журнал сеансов по умолчанию отключен. Вы можете явно включите его, установив SHELL_SESSION_HISTORY в 1.

обратите внимание, что, хотя вы можете отключить весь механизм восстановления состояния сеанса, создав ~/.bash_sessions_disable, это не нужно просто отключить функцию истории команд за сеанс, и это не рекомендуемый.


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

что касается терминала, для этого должны быть три вещи:

  1. $HOME/.bash_sessions_disable должны не присутствует
  2. System Preferences/General/Close Windows when quitting an app должны не быть проверены.
  3. когда перезагрузка, выберите Reopen windows.

при повторном открытии терминала он откроет те же окна и вкладки, что и раньше, в тех же положениях экрана. Кроме того, если вы проверили Terminal/Preferences/your-window-type/Windows/Resume/Restore-text-when-reopening-windows, он восстановит текст на каждом экране.

наконец, и это относится конкретно к вопросу OP, он восстановит историю в каждом окне / вкладке, если выполняются следующие условия:

  1. SHELL_SESSION_HISTORY не установлено или установлено в 1
  2. shopt histappend не установлено
  3. HISTTIMEFORMAT не установлено

если SHELL_SESSION_HISTORY явно установлено значение 1 в .bashrc, последние два требования переопределены, то есть shopt histappend или HISTTIMEFORMAT может быть установлен.

кроме того, необходимо обратить внимание на HISTSIZE и HISTFILESIZE переменные. Они не должны быть слишком большими или слишком маленькими, и некоторые советуют оставить их неустановленными, чтобы они принимали значения по умолчанию Apple.