This is a note-to-self post.
The problem is caused by a (potentially) expensive ASL system log lookup. To see this in action, run
sudo fs_usage | grep 'asl.*login' in a Terminal window, then open a new Terminal window.
To solve the problem, configure Terminal to launch a non-standard shell:
- Create a symlink to your preferred shell. E.g.:
sudo ln -s /bin/bash /usr/local/bin/bash
- Open Terminal Preferences and select the "General" tab.
- Select "Shells open with: Command" and enter the symlink you created in step 1. E.g. "/usr/local/bin/bash".
Note 1: You may also need to add bash and -bash to the process list at "Terminal Preferences > Profiles > Shell > Ask before closing".
Note 2: /usr/local/bin is writable in OS X 10.11 (El Capitan) Rootless mode.
To verify the fix:
- Open a new Terminal window.
- "Last Login:" should not be displayed at the top
- Open the inspector (Command + I) and select the Info tab.
- The command should read
login -pfq username /usr/bin/bashor
login -pfql username...
Important: If the login command does not include the -q parameter, then you have not fixed the problem.
You can also use
sudo fs_usage | grep 'asl.*login' to verify that
/var/log/asl is not accessed when opening a new Terminal window.