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

时间:2011-04-06 00:26:03

标签: macos terminal

当我完成终端时,我想退出它。现在,我有三个选择:

  1. killall终端。它将结束这个过程,但却是突然的。我不认为这是最好的主意。

  2. 致电退出。我已经更改了设置,因此退出关闭终端。该应用程序仍然在Dock中显示为打开,并且不执行我想要它做的事情。

  3. 右键单击>退出。但是,这不是退出它的终端命令。

  4. 现在,我应该退出并关闭终端的方式是什么?我听说过osascript,但我不太确定。我想退出并关闭,以便终端不再作为窗口和进程打开。

14 个答案:

答案 0 :(得分:162)

在Terminal.app中

偏好设置>个人资料> (选择个人资料)>外壳

on'当shell退出时'选择'关闭窗口'

答案 1 :(得分:29)

好老的Command-Q怎么样?

答案 2 :(得分:28)

在终端应用中,偏好设置>> 个人资料标签。

选择右侧的 Shell 标签。 enter image description here

您可以选择从不关闭前询问以取消警告。

答案 3 :(得分:9)

我一直在使用ctrl + d。它会把你带到你首先启动sqlite3命令的目的地。

答案 4 :(得分:8)

在终端窗口中,您可以输入:

kill -9 $(ps -p $PPID -o ppid=)

这将终止终端应用程序进程,该进程是当前进程的父进程的父进程,如kill命令所示。

要从正在运行的脚本中关闭终端窗口,您需要在流程层次结构中再增加一个级别,如下所示:

kill -9 $(ps -p $(ps -p $PPID -o ppid=) -o ppid=) 

答案 5 :(得分:8)

实际上,您应该在终端上设置一个配置,当终端启动时,按 + ,您将看到以下屏幕:

enter image description here

然后按shell标签,您将在下面的屏幕中看到:

enter image description here

现在为当外壳退出时选择Close if the shell exited cleanly

通过每次使用exit命令进行上述配置,终端将关闭但不会退出。

答案 6 :(得分:7)

您可以通过osascript命令使用AppleScript:

osascript -e 'tell application "Terminal" to quit'

答案 7 :(得分:4)

osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"

这模拟 CMD + w 按键。

如果您希望终端完全退出,您可以使用: osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"

这不会产生任何错误,并使终端干净利落。

答案 8 :(得分:3)

您也可以使用此复杂命令,该命令不会触发有关终止其自身进程的警告:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit

此命令很长,因此您可以在bash配置文件中定义别名(例如quit):
alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'

这样您就可以在终端中输入quit,而无需进行任何其他设置。

答案 9 :(得分:2)

在代码中使用osascript命令,如icktoofay所述:osascript -e 'tell application "Terminal" to quit'

然后,打开终端首选项,转到设置> Shell,并将“关闭前提示:”设置为“从不”。终端现在应该完全退出(不在码头中保持打开状态)并在退出前忽略提示。如果您只打开了一个终端窗口并且osascript命令是最后一行代码,它应该等待您之前运行的任何命令。

如果您在后台运行相同窗口或其他窗口中的脚本,这将不太理想(例如,您可以在后台运行命令,并在遵循第一个命令时继续使用当前窗口执行其他命令通过&符号);小心!

如果将osascript代码包装在shell脚本文件中,您可以使用您提供的任何精简文件名来调用它 - 只要它在终端的搜索路径中(运行{{1}查看终端查找脚本的位置)。

答案 10 :(得分:1)

我一直在使用

退出-n终端

在我的脚本结束时。您必须将终端设置为从不在首选项中提示

所以终端>偏好>设置>贝壳 当shell退出时 关上窗户 关闭前提示 从未

答案 11 :(得分:0)

创建脚本:

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

答案 12 :(得分:0)

我在这里尝试了几种答案。无论我如何尝试,总能找到一个提示用户关闭终端的用例。

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

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

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

答案 13 :(得分:-3)

如果这是Mac,请输入'exit',然后按返回。