我已经设置了一个脚本,使用以下 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.command
为osascript 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/Resources
Platypus 应用程序的)的工作目录,然后才执行script.command
。
答案2
事实证明,我忽略了一种更简单的技术。
主脚本不需要改变:
open script.command
现在的开始script.command
是这样的:
#!/usr/bin/perl
use File::Basename;
chdir(dirname($0));
当然,这只在 Perl 脚本范围内有效,因此在更复杂的情况下,AppleScript 解决方案是可行的方法。