【发布时间】:2011-07-04 19:08:54
【问题描述】:
我有一个在 OS X 上具有用户执行权限的 shell 脚本,但是当我双击它时,它会在文本编辑器中打开。怎样才能通过双击让它运行呢?
【问题讨论】:
标签: macos shell scripting desktop
我有一个在 OS X 上具有用户执行权限的 shell 脚本,但是当我双击它时,它会在文本编辑器中打开。怎样才能通过双击让它运行呢?
【问题讨论】:
标签: macos shell scripting desktop
首先在终端中输入以下命令使脚本可执行:
chmod a+x yourscriptname
然后,在 Finder 中,右键单击您的文件并选择“打开方式”,然后选择“其他...”。
您可以在此处选择要在其中执行文件的应用程序,在本例中为终端。为了能够选择终端,您需要从“推荐应用程序”切换到“所有应用程序”。 (Terminal.app 应用程序可以在 Utilities 文件夹中找到)
请注意,除非您不想将所有文件与此扩展名关联以在终端中运行,否则不应选中“始终打开方式”。
单击“确定”后,您只需双击即可执行脚本。
【讨论】:
.command 的可执行脚本默认情况下可从 Finder 中执行,不带需要指示 Finder 如何打开它。
.command 文件扩展名。
您是否尝试过使用.command 文件扩展名?
【讨论】:
chmod +x) 但 .command 扩展名已经与终端链接。很好的解决方案,谢谢
从 OSX 10.10(优胜美地)开始,至少 OS X 10.8(Mountain Lion),当您从 Finder 中打开(双击)可执行脚本时,行为如下:
.command:Preferences... > Profiles,您可以选择在脚本退出时自动关闭窗口。cd -- "$(dirname "$BASH_SOURCE")" 就在shebang线之后cd -- "$(dirname "$0")"。chmod +x <script> 使其可执行;否则,您会看到以下症状:.command:Finder 显示一条误导性错误消息,暗示可以通过 File > Get Info 解决问题,但事实并非如此 - 使用上面建议的 chmod +x 方法。#!/bin/bash):行为就像后缀是 .sh - 见下文。.sh的脚本,无论是否可执行:TextEdit.app 中打开以进行编辑,或者,如果已安装,则使用Xcode.app。.scpt或.applescript的脚本(即使它们本身被标记为可执行文件,但通常情况并非如此):
[Apple]Script Editor 中编辑
[1] Executable 表示:设置了可执行权限位的脚本和调用用户 - 相对于文件的所有权 - 因此可能被允许执行它.
如果您使用chmod a+x 设置all 权限位(这是典型的),任何人 都可以调用它(假设他们也被允许读取 基于读取权限位和文件所有权的文件。
【讨论】:
osascript 可以包含在.command 文件中,而不是手动弄乱配置文件。
osascript -e '...' 命令吗?具体命令是什么,是否保证即使最前面的标签没有运行脚本也能关闭右边的标签?
.command 脚本文件后不关闭终端窗口/选项卡,尽管有配置文件设置?
bash 脚本,则添加 read -p 'Press Return to close this window.' 作为最后一条语句。
或者,您可以使用 Platypus 从您的脚本创建一个常规的 Mac OS X 应用程序
【讨论】:
【讨论】:
无需使用鸭嘴兽等第三方应用。
只需使用脚本编辑器创建一个 Apple 脚本,并使用命令 do shell script "shell commands" 进行直接命令调用或可执行的 shell 脚本文件,将可编辑的脚本文件安全保存在某处,然后将其导出以创建应用程序脚本。应用脚本可通过双击或在 bar 文件夹中选择来启动。
【讨论】:
您还可以使用 RCDefaultApp 按文件扩展名设置默认值:
http://www.rubicode.com/Software/RCDefaultApp/
您可能可以将 .sh 设置为在 iTerm/Terminal 等中打开。它需要用户执行权限,例如
chmod u+x filename.sh
【讨论】:
chmod 774 filename
注意:带有 bash 脚本的名为 'filename' 的文件没有扩展名
【讨论】: