如何在OSX中执行“exit”命令后自动关闭终端窗口。

164

当我完成终端的操作后,我想要退出。目前,我有三个选项:

  1. 使用killall Terminal。这会结束进程,但相对突然。我认为这不是最好的选择。

  2. 调用exit命令。我已更改设置,使得exit关闭终端。但该应用程序仍会在Dock中显示,并不能达到我的要求。

  3. 右键点击>退出。但这不是一个退出终端的终端命令。

那么,现在,我应该如何退出和关闭终端呢?我听说过osascript,但我不太确定。我想退出并关闭终端,以便终端不再作为窗口和进程打开。


kill 命令一样,默认情况下,killall 也会发送 SIGTERM 信号,这个信号可以被捕获。一些程序会捕获该信号,清理自己并正常退出,但我不确定 Terminal.app 是否是其中之一。然而,考虑到它似乎没有任何编程内容,若有需要,建议在 Ask Different 或 Super User 上寻求帮助。 - dmckee --- ex-moderator kitten
3
我认为这个问题的措辞更好地是“如何在最后一个 shell 退出后退出终端?”。 - Chris Page
15个回答

2

这是我为刚编写的命令所做的事情。我想要能够在不同的计算机上创建指向苹果配置器备份目录的“快捷方式”,但由于它相对于用户的主目录,我需要将其制作成.command文件。以下是内容:

#!/usr/bin/env bash

open "${HOME}/Library/Application Support/MobileSync/Backup"
(sleep 0.1 ; osascript -e 'tell application "Terminal" to quit') &

这对我来说是最干净的,没有警告。谢谢! - Joe Steele

1

创建一个脚本:

cat ~/exit.scpt

像这样:

  • 注意:如果只有一个窗口,只需退出应用程序,否则模拟command + w关闭选项卡)

tell application "Terminal" set WindowNum to get window count if WindowNum = 1 then quit else tell application "System Events" to keystroke "w" using command down end if end tell

然后在您的*shrc中添加别名

就像vi ~/.bashrczshrc(还有其他什么吗?)

添加它: alias exit="osascript ~/exit.scpt"

并且源化~/.bashrc或重新打开您的terminal.app


1
我一直在我的脚本末尾使用“quit -n terminal”。您必须在首选项中将终端设置为从不提示。
因此,打开终端 > 首选项 > 设置 > Shell 当 shell 退出时 关闭窗口 关闭之前提示 从不

0

我尝试了这里的几个答案的变化。无论我尝试什么,我总能找到一个使用情况,用户被提示关闭终端。

由于我的脚本是一个简单的(drutil -drive 2 tray open -- 打开特定的 DVD 驱动器),用户在脚本运行时不需要看到终端窗口。

我的解决方案是将脚本转换为应用程序,以在不显示终端窗口的情况下运行脚本。额外的好处是,任何已经打开的终端窗口都会保持打开状态,如果没有打开,则脚本结束后终端不会保留。似乎根本不启动终端来运行 bash 脚本。

我按照这些说明将我的脚本转换为应用程序:https://superuser.com/a/1354541/162011


-3
如果您使用的是 Mac,您可以输入 'exit' 然后按回车键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接