在工作目录中启动 Terminal.app

在工作目录中启动 Terminal.app

我已经设置了一个脚本,使用以下 bash 命令启动终端:

open script.command

script.command是一个 Perl 脚本,它可以很好地执行。(这可能看起来有点复杂,但这是我发现的唯一一种在 Platypus 创建的常规应用程序中将脚本与交互式命令行捆绑在一起的方法。)唯一的问题是,无论上述命令在哪里执行,脚本的工作目录始终是我的主目录。这同样适用于open -a Terminal

我尝试过这样做:

open script.command --args "`pwd`"

从技术上来说这应该可以工作(使用 a 中的参数chdir),但是该参数并未传递给 perl 脚本(script.command)。

终端是否有我不知道的命令行选项?

答案1

您描述的方法不起作用,因为参数被传递给终端(忽略它们)而不是脚本的脚本解释器。


相反,您可以使用 AppleScript 先将终端cd置于正确的目录,然后打开交互式脚本。将 替换open script.commandosascript launchscript.scpt "$PWD" >/dev/null

在 AppleScript 编辑器中,创建一个包含以下内容的脚本:

on run argv
    tell application "Terminal"
        activate
        do script "cd " & quoted form of item 1 of argv & " ; ./script.command"
    end tell
end run

保存为launchscript.scpt并作为资源包含在 Platypus 中。

这将打开一个终端窗口,该窗口将首先cd进入主脚本(Contents/ResourcesPlatypus 应用程序的)的工作目录,然后才执行script.command

答案2

事实证明,我忽略了一种更简单的技术。

主脚本不需要改变:

open script.command

现在的开始script.command是这样的:

#!/usr/bin/perl

use File::Basename;
chdir(dirname($0));

当然,这只在 Perl 脚本范围内有效,因此在更复杂的情况下,AppleScript 解决方案是可行的方法。

相关内容