有没有简单的方法可以将命令行参数附加到 Mac 上的应用程序?例如,要以信息亭模式运行 Opera 或在 Firefox 中使用不同的配置文件,我可以输入
$ /Applications/Opera.app/Contents/MacOS/Opera -kioskmode
$ /Applications/Firefox.app/Contents/MacOS/firefox -P profilename -no-remote
在 Windows 中,我可以将参数附加到快捷方式属性,但由于 Mac 本身不使用快捷方式并直接运行应用程序,因此这是不可能的。
我发现通过 bash 或 Applescript 启动应用程序部分有效:
# Bash
#!/bin/sh
/Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote
# Applescript
do shell script "exec /Applications/Opera.app/Contents/MacOS/Opera -kioskmode"
我可以让它们可执行并分配一个图标,一切都运行良好,只是当我运行这两个伪程序时,只要应用程序打开,终端窗口或 Applescript 图标就会保持打开状态。据推测,使用 Applescript 命令open
可以避免这种情况,但由于我没有按打包方式运行应用程序(只是/Applications/Firefox
),所以它不起作用。
那么,有没有更好的方法使用命令行参数来运行应用程序?如果没有,有没有办法防止应用程序打开时持久终端会话或 Applescript 图标保持打开状态?
编辑
根据Mozilla 维基页面,最好使用脚本来运行带参数的应用程序。&
在脚本末尾添加一个会关闭持久终端窗口。现在唯一的烦恼是它会打开一个死的、已注销的终端窗口(这比持久窗口要好,但仍然……)
#!/bin/sh
/Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote &
答案1
这个答案已经过时了。
请参阅有关现代 Mac OS 的其他答案。
这是我的最佳解决方案:使用以下命令创建 Applescript:
do shell script "/Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote & killall Firefox.app"
和另存为应用程序。
您可以将任何应用程序和任何参数放在第一部分中。后面的部分需要&
终止您已命名的脚本 + .app。您会看到脚本应用程序在 Dock 中闪烁,但随后它会消失。
注意:从脚本编辑器运行时脚本将无法正常工作,只有从您创建的脚本应用程序运行时才能正常工作。
答案2
从 OS X 10.6.2 开始,open 命令可以通过 --args 标志将参数传递给它打开的应用程序。使用它的 AppleScript 如下所示:
do shell script "open -a /Applications/Firefox.app --args -P default -no-remote"
这应该可以满足您的所有需求。
答案3
打开自动机并创建一个应用单一运行 Shell 脚本行动:
/Applications/Firefox.app/Contents/MacOS/firefox-bin -here-some-args &
此应用程序将启动 Firefox 并立即退出,只留下 Firefox 运行。
或者,使用以下方式创建应用程序AppleScript 编辑器使用以下 AppleScript 代码:
do shell script "open -a '/Users/danielbeck/Applications/Firefox.app' --args -ProfileManager"
两者都可以正常工作,并且不会让终端或脚本应用程序运行超过一秒钟左右。使用 Automator,你甚至可以创建一个服务如果你选择这样。
答案4
这是一个老话题了,但在 Google 搜索中仍然会出现,所以我想添加一些 ¢。
最好使用“捆绑标识符”而不是可执行文件的绝对路径:
open -b com.google.Chrome --args --profile-directory="Profile 1"
或者在 Apple 脚本中:
do shell script "open -b com.google.Chrome --args --profile-directory='Profile 1'"
我还没有弄清楚的是,在第一个实例/窗口已经打开后,如何打开具有不同配置文件的新实例/窗口。(如果我运行上面的 AppleScript,然后运行另一个具有“配置文件 2”的实例/窗口,那么 Chrome 仍然会以“配置文件 1”打开另一个窗口)。:(