I use the Mac Terminal with a hand full of tabs each assigned to a different working directory. I have configured it to open new windows with the same working directory. Nevertheless, when I am quitting Terminal, and restart it it rebuilds all the tabs, their names, even shows me the last output in the window but stays in the user home directory and does not restore the latest working directory of each tab.
What am I doing wrong? Can this be caused by some setting in the ~/.bash_profile
?
Best Answer
(For reference, we’re talking about the Resume feature of Mac OS X Lion 10.7 and later.)
Terminal automatically restores the working directory if you’re using the default shell, bash. If you’re using some other shell, you’ll need to adapt the code in
/etc/bashrc
to send an escape sequence to communicate the working directory to Terminal so it can restore the directory later for Resume. If you’re using zsh, see my answer to Resume Zsh-Terminal (OS X Lion), in which I include the appropriate code for zsh.If you have a custom
~/.bash_profile
or~/.bashrc
you may need to ensure that you’re not undoing the default behavior by modifying/etc/bashrc
’s customizations. In particular, it sets thePROMPT_COMMAND
environment variable to send the escape sequence at each prompt. If you customize that variable, you’ll need to prefix or append your code to the current value, e.g.:Also, generally,
~/.bash_profile
should execute~/.bashrc
: