(This issue has also been reported on Stack Overflow and discussions.apple.com, as well as Feedback Assistant. Hope it’s not inappropriate to post here.)
(TL; DR: If you’re even an occasional user of the stock Apple Terminal app, it would be useful to know if you experience this. You need to have macOS set to restore apps’ windows, and have more than one terminal window or tab open when you quit. I have seen this in a new virtual machine, indicating it’s a pervasive issue.)
Recently (but not clear how recently since it’s not tied to a specific macOS release), Apple Terminal has been giving the following error on startup (when macOS is set to restore windows, i.e., when System Settings > Close windows when quitting… is unset):
date: illegal time format
usage: date [-jnRu] [-I[date|hours|minutes|seconds]] [-f input_fmt]
[-r filename|seconds] [-v[+|-]val[y|m|w|d|H|M|S]]
[[[[mm]dd]HH]MM[[cc]yy][.SS] | new_date] [+output_fmt]
-bash: Saving: command not found
I have traced this to an error coming from /etc/bashrc_Apple_Terminal
which is largely concerned with saving and restoring sessions for the various terminal tabs and windows.
It comes from the lines
if [ -r "$SHELL_SESSION_FILE" ]; then
. "$SHELL_SESSION_FILE"
rm "$SHELL_SESSION_FILE"
fi
On shell startup, this snippet runs, and then deletes, "$SHELL_SESSION_FILE"
, which is written at shell exit by the following lines:
if [ -n "$SHELL_SESSION_FILE" ]; then
echo -ne '\nSaving session...' >&2
(umask 077; echo 'echo Restored session: "$(/bin/date -r '$(/bin/date +%s)')"' >| "$SHELL_SESSION_FILE")
declare -F shell_session_save_user_state >/dev/null && shell_session_save_user_state
shell_session_history_allowed && shell_session_save_history
echo 'completed.' >&2
fi
The error occurs because $SHELL_SESSION_FILE
in ~/bash_sessions/
contains the following incorrect text:
Saving session...echo Restored session: "$(/bin/date -r 1698759014 Saving session...)"
rather than the expected echo Restored session: "$(/bin/date -r 1698759014)
For some reason, the Saving session...
text is appearing in the file (twice!).
The code is run via trap shell_session_update EXIT
. The error only seems to happen when I exit the shell by quitting Terminal.app, but not when I just use the exit
command. (And I’ve even tried explicitly sending various signals to the shell via kill -n
, but I can’t seem to induce the error that way.) There is some evidence that it is a race condition of some sort, only occurring when there is more than one terminal window or tab open when the Terminal app is quit. (One of the SO answers has a modification to /etc/bashrc_Apple_Terminal
which fixes the problem, but this may be just a band-aid over the symptom rather than the underlying cause.)
The error spans multiple versions of macOS, both intel and Apple Silicon, and a similar error appears with zsh
rather than bash
, and the error has been seen by others. There does not appear a single piece of software common to everyone who has seen the problem. (Suggested causes have included homebrew, Python, VS Code. I have removed /opt/homebrew
and rebooted and am still seeing the issue (but I haven’t tried with a completely pristine system. Is it possible that any of these things somehow “pollutes” the environment – e.g., /etc/
– in some way that remains in place?)
I can’t tell if the error is very common but just not reported, since indeed whenever I’ve had an opportunity to ask a colleague about it, they have inevitably been able to reproduce the bug on their own machines. (But in this case I would expect it to be common with Apple employees, and hence something in line to be fixed…)
Is anyone (everyone?) else seeing this? Any ideas beyond the brittle /etc/bashrc_Apple_Terminal
fix?