如何通过双击在OS X中运行一个shell脚本?

我有一个在OS X上有用户执行权限的shell脚本,但是当我双击它时,它会在文本编辑器中打开。 我怎样才能通过双击运行它?

  • 首先在terminal中input以下命令来执行脚本:

    chmod a+x (yourscriptname) 
  • 然后,在Finder中,右键单击您的文件并select“打开方式”,然后select“其他…”。

  • 在这里你select你想要执行文件的应用程序,在这种情况下,它将是terminal。 为了能够selectterminal,您需要从“推荐的应用程序”切换到“所有应用程序”。 (Terminal.app应用程序可以在Utilities文件夹中find)

  • 请注意,除非您不想将所有带有此扩展名的文件关联到terminal,否则您不应该选中“始终打开”。

  • 点击确定后,只需双击它即可执行脚本。

你有没有尝试过使用.command文件扩展名?

从OSX 10.10 (优胜美地)开始,至less OS X 10.8 (Mountain Lion)从Finder打开(双击) 可执行脚本时,其行为如下所示:

  • 带有NO后缀后缀的 可执行脚本[1] .command
    • 是默认执行的 – 不需要安装
      • 将打开一个新的“terminal”窗口,其中运行脚本。
      • 默认情况下,脚本终止后窗口将保持打开状态 ,以便检查输出 (尽pipe此时运行脚本的shell已经退出,并且不能再与其进行交互 )。
        但是,通过terminal的Preferences... > Profiles您可以select在脚本退出时自动closures窗口。
    • 警告工作文件夹总是当前用户的主文件夹 ,而不是脚本所在的文件夹。
      • 要将shell脚本更改为它所在的文件夹,请放置
        • cd -- "$(dirname "$BASH_SOURCE")"在shebang行之后
        • 或者,如果您必须保持POSIX兼容, cd -- "$(dirname "$0")"
        • 对于边缘情况,例如查找符号链接脚本的真实源代码目录,请参阅我的答案 。
    • 如果脚本意外不可执行
      • 通过在terminal中运行chmod +x <script>使其可执行。 否则,您将看到以下症状:
      • .command :Finder会显示一个误导性的错误信息,表明可以通过File > Get Info修复问题,这不是真的 – 使用上面提到的chmod +x方法。
      • 没有后缀:
        • (例如#!/bin/bash ):行为就好像后缀是.sh见下文。
        • 没有 shebang行:打开默认的文本编辑器(默认情况下是TextEdit)。
  • 具有后缀.sh脚本,无论是否可执行:
    • TextEdit.app打开进行编辑 ,如果安装了Xcode.app ,也可以进行Xcode.app
  • 具有后缀.scpt.applescript脚本(即使它们本身被标记为可执行文件,通常情况下也是如此):
    • [Apple]Script Editor 打开进行编辑
    • 请注意, JXA源代码文件似乎没有明确的后缀(还)。
  • 具有自定义后缀的脚本(系统还不知道的后缀),无论是否可执行(实际上,适用于任何types的文件):
    • 提示 第一次打开应用程序时打开它们 ,并记住该选项

[1] 可执行的意思是:一个脚本的可执行权限位被设置,调用用户 – 相对于文件的所有权 – 因此可能被允许执行它。
如果您使用chmod a+x来设置所有权限位(这是典型的), 任何人都可以调用它(假设它们也被允许根据权限位和文件所有权来读取文件)。

或者,您可以使用Platypus从您的脚本创build一个常规的Mac OS X应用程序

无需使用鸭嘴兽等第三方应用程序。

只需使用脚本编辑器创build一个Apple脚本,然后使用命令do shell script "shell commands"进行直接命令调用或执行shell脚本文件,将可编辑脚本文件保存在某处,然后将其导出以创build应用程序脚本。 应用程序脚本可以通过双击或在文件夹中select启动。

简单的方法是将扩展名更改为.command或不扩展。

但是,这将打开terminal,你将不得不closures它。 如果您不想看到任何输出,可以使用Automator创build一个Mac应用程序,您可以双击,添加到扩展坞等。

  1. 打开Automator应用程序
  2. select“应用程序”types
  3. 在“操作”search框中input“运行”
  4. 双击“运行Shell脚本”
  5. 点击右上angular的Runbutton进行testing。
  6. File > Save以创build应用程序。

在这里输入图像描述

如果你给你的脚本一个.command扩展名,并在其上执行一个chmod 777 (使其可执行),它将在双击时在terminal中打开并运行。 src: https : //discussions.apple.com/thread/2599189

有些人在评论中发布了其他答案:

复制您的脚本,然后将重复的脚本保存为应用程序。

现在该应用程序将在双击时运行。

我将更新这个答案,因为我保存为应用程序的文件已经被赋予了chmod权限,待定testing将validation是否需要。

提供了导致这个答案的解决scheme: http : //alvinalexander.com/blog/post/mac-os-x/applescript-save-script-as-application