macOS 'open -a' 命令仅在传递 -n 选项时才会将参数传递给应用程序

问题描述 投票:0回答:1

我正在关注关于如何从命令行打开 Jetbrains IDE 的教程,命令是:

open -na {app_name} --args --line {line_number} {file_path} 

所以这个命令效果很好,但是从教程和

open --help
我看到
-n
选项意味着

打开应用程序的新实例,即使该实例已经在运行。

这不是我想要的。在这种特定情况下,这并不是什么大问题,因为看起来只有一个 Jetbrains IDE 实例可以存在,因此它将尝试打开一个实例并重定向到正在运行的实例(我可以看到一个新图标在 Dock 中弹出,然后它切换到现有的)。

但是,如果我不传递

-n
选项,它将打开已经运行的应用程序,但看起来参数被忽略。 (我知道我仍然可以使用
open -na {app_name} {file_path}
传递文件路径,但我需要行号焦点)。除非应用程序尚未运行,在这种情况下它与
-na
完全相同。

起初我以为这是 Jetbrains 的问题,但我尝试了其他应用程序(例如 Google Chrome 和 Safari),它似乎来自

open
命令本身。

这是一个错误还是预期的?

-n
选项的描述没有提及参数。是因为应用程序仅在启动新实例时才读取参数吗?

macos shell
1个回答
0
投票

这是预期行为,因为

--args
在启动期间传递给应用程序。
您可以先退出应用程序:

osascript -e 'tell application "appname" to if it is running then quit'

然后

open -a
带有
--args
的应用程序,没有
-n

© www.soinside.com 2019 - 2024. All rights reserved.