My Bash history is remembered when I connect to my Mac via SSH, use iTerm2 or launch bash in the built-in Terminal app (every command I typed in bash is saved) but is not when I just use the built-in Terminal app. I already tried resetting the profiles in Terminal. I also checked ownership and permissions of .bash_history. Later I also tried to delete this file. This answer didn't help either. My default shell definitely is bash.

  • Without further details, this could be a duplicate of apple.stackexchange.com/questions/50649/… (linked on top as well), apple.stackexchange.com/questions/139807/… or one of the other similar questions here. Why don't you either try the suggestions in the answers to the linked questions or edit more details about your detailed setup and what you've already tried into the question? – nohillside Dec 25 '15 at 13:42
  • @patrix Sorry about that. I already tried the suggestions in the question now linked above before posting this question. I added more information to my question. – Ph99Ph Dec 25 '15 at 15:45
  • 1
    Found a solution. I would have added it as an answer, if this question hadn't been locked. I had to create the following file ~/.bash_sessions_disable in order to disable behaviour introduced in El Capitan. superuser.com/questions/950403/… – Ph99Ph Dec 25 '15 at 15:56
  • The question’s not actually locked as far as I can tell. So I think you should be able to post your answer here (and if you do, I’ll upvote it, because while there’s already an answer for it a SuperUser, there isn’t one here at Ask Different yet). – sideshowbarker Dec 25 '15 at 17:18

Begin isolating the source of the problem by removing any customizations of Bash’s history. For example, any code that sets shell variables that begin with HIST, or uses set -o to set either the history or histexpand shell options.

The per-session command history code in /etc/bashrc_Apple_Terminal attempts to maintain compatibility with Bash’s history variables, and tries to detect when the user is probably doing something it can’t be compatible with and disables the mechanism in that case (because the user is doing something arbitrary, like loading, saving or modifying the history). However, if you have scripts that run the history command, that code has no way of knowing in advance; you’ll need to either update your code to maintain compatibility with the new per-session command history, or disable the per-session history by setting SHELL_SESSION_HISTORY=0 as described in the documentation in /etc/bashrc_Apple_Terminal.

If you’re not customizing HISTFILE, HISTTIMEFORMAT or the histappend shell option, another thing to check is if your shell startup script(s) modify either PROMPT_COMMAND variable or the EXIT trap without concatenating the previous value to avoid wiping it out.

See the comments in /etc/bashrc_Apple_Terminal for a description of how the mechanism works and how to customize or disable it.


See this answer from a similar question. El Capitan made some changes whereby it tries to do session-dependent history. You can likely fix your problem just by running touch ~/.bash_sessions_disable to create a flag file to disable this behaviour.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .