- Open Terminal Preferences
- Select the Startup tab
- Select "Shells open with: Command", and use "/usr/bin/bash" as the command.
Important: Do not use "/bin/bash" as the startup command. If "/usr/bin/bash" does not exist on your system, create a symbol link:
sudo ln -s /bin/bash /usr/bin/bash
To verify the fix:
- Open a new Terminal windows.
- "Last Login:" should not be displayed
- Open the inspector (Command + I) and select the Info tab.
- The command should read
login -pfq username /usr/bin/bash
Important: If the login command does not include the
-q parameter, then you have not fixed the problem.
/usr/bin/login to launch each new window/shell. By default,
/usr/bin/login will display the date of your last login. To get this last login date, it searches the ASL (Apple System Log) database at
/var/log/asl/. These log files can be very heavily fragmented and it's this file fragmentation that causes the delay when opening a new window or tab.
To see this in action, run
sudo opensnoop | grep login in a Terminal window, then open a new Terminal window.
To prevent /usr/bin/login from doing this ASL search, you must pass the
-q parameter. The only way Terminal will pass the
-q parameter is when you specify a custom shell command in the Preferences.
.hushlogin does not prevent /usr/bin/login from doing the ASL search. This can be confirmed by using the
opensnoop command above.