If you’re a fan of shell scripts in macOS, you’ve probably noticed how running one will leave you with a useless Terminal window after it’s completed. You can fix this from the Terminal settings.
This method only works if you’re launching a shell script outside of bash, such as by clicking on it in Finder or by setting a custom hotkey to open the program. Otherwise, you’ll just be taken back to the command prompt. You can always use
killall Terminal to make the Terminal app close itself from within a script, but that will close every open Terminal window, so it’s not ideal.
Change This Behaviour in the Profile Settings
Open up the Terminal app from the Dock or your Applications folder, then open the settings by pressing Command+Comma.
In the Settings window, switch to the Profiles tab. The default profile (the one at the top) should be selected by default. In the settings on the right, click the “Shell” tab and then click the “When the shell exits” drop-down menu.
The drop-down menu defaults to “Don’t close the window,” but you’ll want to change this to “Close if the shell exited cleanly.”
You can also make it close every time, but this way you’ll still get an error message if a process exits with a nonzero exit status. Keep in mind that you may need to exit the script explicitly with the
exit command to get this behavior in all cases.