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

时间:2011-02-26 08:41:39

标签: macos shell scripting desktop

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

8 个答案:

答案 0 :(得分:242)

  • 首先在终端中输入以下命令使脚本可执行:

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

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

  • 请注意,除非您不想将具有此扩展名的所有文件与终端中运行相关联,否则您不应选中“始终打开方式”。

  • 单击“确定”后,您只需双击即可执行脚本。

答案 1 :(得分:209)

您是否尝试过使用.command文件扩展名?

答案 2 :(得分:131)

从OSX 10.10 (约塞米蒂)开始,至少至少 OS X 10.8 (Mountain Lion),当您从Finder 打开(双击)可执行脚本 时,行为如下:

  • 可执行脚本 [1] 使用无后缀后缀.command
    • 默认情况下 已执行 - 无需安装
      • 将打开一个 new 终端窗口,脚本将在该窗口中运行。
      • 默认情况下,在脚本终止后,窗口将保持 open ,这样您就可以检查输出(尽管此时shell已经运行脚本已退出,您不能再进行交互。) 但是,通过终端Preferences... > Profiles,您可以选择在脚本退出时自动关闭窗口。
    • 警告工作文件夹总是当前用户的主文件夹 ,而不是脚本所在的文件夹。
      • 要将shell脚本更改为其所在的文件夹,请放置
          在shebang line之后
        • cd -- "$(dirname "$BASH_SOURCE")"
        • 或者,如果您必须保持POSIX兼容,请cd -- "$(dirname "$0")"
        • 对于边缘情况,例如查找符号链接脚本的真实源目录,请参阅我的this answer
    • 如果脚本意外可执行
      • 通过在终端中运行chmod +x <script>使其可执行;否则,您将看到以下症状:
      • .command:Finder会显示一条误导性错误消息,表明问题可以通过File > Get Info修正,但事实并非如此 - 使用上面建议的chmod +x方法。
      • 没有后缀:
        • 一个shebang行(例如#!/bin/bash):行为就像后缀是.sh一样 - 见下文。
        • with no shebang line:在默认文本编辑器中打开(默认情况下为TextEdit)。
  • 后缀.sh 的脚本,无论是否可执行:
    • TextEdit.app中为编辑 打开,如果已安装,则为Xcode.app
  • 带有后缀.scpt .applescript 的脚本(即使他们自己被标记为可执行文件,通常情况并非如此) ):
    • [Apple]Script Editor
    • 中为编辑 打开了
    • 请注意,JXA源代码文件似乎没有明显的后缀(尚未)。
  • 带有 a 自定义后缀(系统尚未知的后缀)的脚本,无论是否可执行(事实上,适用于任何类型的文件):
    • 提示,以便首先打开时,打开它们,然后记得那个选择

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

答案 3 :(得分:37)

或者,您可以使用Platypus

从脚本创建常规Mac OS X应用程序

答案 4 :(得分:11)

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

但那将打开终端,你将不得不关闭它。如果您不想看到任何输出,可以使用Automator创建一个可以双击,添加到扩展坞等的Mac应用程序。

  1. 打开Automator申请
  2. 选择“申请”类型
  3. 在“操作”搜索框中键入“run”
  4. 双击“运行Shell脚本”
  5. 点击右上角的Run按钮进行测试。
  6. File > Save创建应用程序。
  7. enter image description here

答案 5 :(得分:8)

无需使用第三方应用,例如Platypus。

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

答案 6 :(得分:0)

您还可以使用RCDefaultApp:

按文件扩展名设置默认值

http://www.rubicode.com/Software/RCDefaultApp/

可能你可以设置.sh在iTerm / Terminal等中打开它需要用户执行权限,例如

chmod u+x filename.sh

RCDefaultApp pref pane

答案 7 :(得分:0)

chmod 774 filename

注意:具有bash脚本的名称为'filename'的文件没有扩展名