如果你热衷于在 macOS 上使用 shell 脚本,你可能会遇到这样的情况:脚本运行结束后,会留下一个未关闭的终端窗口。 其实,这个问题可以通过终端的设置来解决。
这个方法只适用于在 bash 之外启动 shell 脚本的情况。例如,通过在 Finder 中点击脚本,或者设置自定义快捷键来启动脚本。 如果你直接在命令提示符下运行脚本,它执行完毕后仍然会回到命令提示符界面。虽然你可以使用 killall Terminal
命令来强制关闭终端应用,但这样做会关闭所有已打开的终端窗口,这显然不是理想的解决方案。
更改配置文件中的设置
首先,从 Dock 或者“应用程序”文件夹中启动“终端”应用,然后按下 Command + 逗号键打开“设置”。
在“设置”窗口中,切换到“配置文件”标签页。 通常,默认配置文件(位于顶部)应该会被选中。 在右侧的设置栏中,点击“Shell”标签页,然后找到“Shell 退出时”的下拉菜单。
默认情况下,这个下拉菜单的选项是“不关闭窗口”,你需要将其更改为“如果 shell 干净退出则关闭”。
你也可以选择每次都关闭窗口,但是如果进程以非零退出状态退出,你仍然会看到错误提示。 请记住,你可能需要在脚本中使用 exit
命令来确保所有情况下都能达到预期效果。
需要注意的是,如果你是从 Finder 启动脚本,那么 exit
命令会自动附加到脚本的末尾。
或者,使用 iTerm2
iTerm2 是 macOS 上一款非常受欢迎的终端替代软件,它可以在 shell 脚本退出时自动关闭窗口。 如果你已经将 iTerm2 作为默认终端,你可能会发现从 Finder 启动的 shell 脚本仍然会使用默认的“终端”应用打开。 这意味着,除非你设置脚本使用 iTerm2 打开,否则你仍然会遇到相同的问题。
你可以通过在 Finder 中右键点击脚本,然后选择“显示简介”来更改打开脚本的应用。
在“打开方式”一栏中,有一个下拉菜单可以让你更改用于打开此脚本的应用程序。 将其设置为 iTerm2,然后点击“全部更改”按钮,可以将此设置应用到所有脚本。
默认情况下,如果你已经打开了一个 iTerm2 窗口,新启动的脚本将会在一个单独的标签页中打开,而不是一个新的窗口。 并且,这个标签页在脚本执行完成后会自动关闭。