Any command in my terminal that exits with non-zero code closes my terminal window
Alright, so indeed, it was a wayward set -e
that caused my trouble.
The way I found the set -e
was using bash -lx
The best thing to do would be to use:
bash -lx > lx.log 2>&1
then open that log file and do a search for set
...
once you find that wayward set -e
you can remove that line and your problem should be gone! (Machine restart might be a good idea tho).
In my case, the set -e
was in a file that .bash_profile sources, but the line was not in .bash_profile itself.
If you just want to solve the problem, include set +e
in your .bashrc
— at the end.
You can go digging—there are a lot of other places where a set -e
might be—but that will take care of the lot.
If, however, the set -e
is part of your $PROMPT_COMMAND
then the above will not work. Try printf '%s\n' "$PROMPT_COMMAND"
and see what's in it.