首页 > 解决方案 > Mac OS X 应用程序运行 shell 脚本但没有终端窗口

问题描述

我对 Mac OSX 相当陌生,正在尝试创建一个 .app 文件以在 Applications 文件夹中运行。我正在使用 MacOS Big Sur,它只会在 Mac 上运行(它不需要是跨平台的)。有一个通过运行 shell 脚本来执行的 jar 文件,以及一些额外的资源文件,所以最终我想将它们捆绑在一个 dmg 之类的东西中,以便我可以轻松地与其他一些人共享它.

我按照这里这里给出的建议进行了设置,几乎一切正常。该程序在我双击 .app 文件时启动,但没有终端窗口。不幸的是,我需要打开终端窗口,因为我用它来向用户记录消息。

终端是 shell 脚本的默认应用程序,当我通过双击直接运行 shell 脚本时,会打开一个终端。该脚本文件使用 .sh 扩展名并且没有扩展名,但如果脚本具有 .sh 扩展名,我在尝试运行 .app 时遇到错误。一切都有执行权限。我浏览了 Info.plist 文档,但找不到有关终端的任何信息。我还尝试使用 Automator 创建 .app,但结果相同。

任何建议都将不胜感激,因为目前我完全陷入困境。正如我所说,最终我希望有一种方法与可能不太精通计算机的其他人分享这个(例如,他们习惯于从 App Store 下载东西并且无法使用命令安装东西线)。因此,如果我将这一切都错了,或者有更简单的方法,那么也让我知道。

标签: macosshellterminal

解决方案


我正在发布我的解决方案,以防将来对任何人有所帮助。正如评论/答案所说,我真正需要知道的是如何让我的应用程序打开终端窗口。显然,通过手动创建应用程序(创建文件夹结构和最小的 Info.plist),我遗漏了一些关键元素。

我尝试使用 Xcode 生成一个。我敢肯定这很简单,但我在尝试编写 Swift 代码时陷入了困境。

对我有用的是使用脚本编辑器创建 AppleScript。该脚本只是告诉终端程序运行我的 bash 脚本:

tell application "Terminal"
   do script "/Applications/{name of app}/Contents/MacOS/run.sh;exit"
end tell

关键是 Script Editor 可以将其作为应用程序保存到 Applications 文件夹,这意味着它会创建必要的文件夹结构和文件。之后,我可以将我的程序文件复制到 MacOS 文件夹中,这是我的 bash 脚本查找所有内容的地方。


推荐阅读