![Mac OS X 登录项没有终端窗口?](https://linux22.com/image/1368257/Mac%20OS%20X%20%E7%99%BB%E5%BD%95%E9%A1%B9%E6%B2%A1%E6%9C%89%E7%BB%88%E7%AB%AF%E7%AA%97%E5%8F%A3%EF%BC%9F.png)
我想/Users/me/dir/executable
在每次登录时运行。
你可以将可执行文件视为文本文件具有可执行权限并包含如下内容:javaws http://some/url
上一句话可能是答案的关键。执行诸如 chrome 之类的程序不会留下终端窗口,但执行文本文件会留下。
我已经配置了一个指向该可执行文本文件的登录项,并且我选中了隐藏复选框(不确定它的作用是什么)。
现在,每次我登录时,都会有一个与此登录项关联的终端窗口。窗口显示
Last login: (timestamp)
/Users/me/dir/executable ; exit;
machine:~ me$ /Users/me/dir/executable ; exit;
logout
[Process completed]
我知道我需要取消选中,Reopen windows when logging back in
这样才能防止这些窗口随着时间的推移而累积。但我想完全隐藏/消除该窗口。
我怎样才能获得一个不留下终端窗口的登录项?
注意:我考虑过使用 launchd。但是我想要运行的东西有/想要一个 UI,所以我不想让它在后台隐藏运行。
答案1
创建单行 AppleScript:
do shell script "/Users/me/dir/executable"另存为应用程序“MyScript.app”(无启动屏幕)
将 MyScript.app 添加到登录项。
原始发帖者实际上创建了一个 shell 脚本文件。如果将其添加到登录项中,OS X 启动服务将打开终端应用程序来处理脚本。这将打开一个终端窗口,正如 OP 所解释的那样。终端的默认行为是在 shell 退出时保持 Shell 窗口打开。这可以作为全局终端首选项进行更改,但这可能不是理想的选择,即使您这样做,终端应用程序仍将保持打开状态。
AppleScript 中的“执行 shell 脚本”命令会打开一个静默 shell 进程,将任何输出返回给 AppleScript 并关闭 shell。保存为可执行应用程序的 AppleScript 会静默运行并退出(除非您通过对话框等指定用户交互)。两步解决方案可能看起来很笨拙,但除了费力设置启动进程外,我不知道还有其他方法。
launchd 也可以工作,因为 launchd 可以生成具有 UI 的进程。