我不太明白其中的区别。我尝试将 .app 文件放入 /usr/bin 并从终端执行它,但没有任何效果。那里放了什么类型的文件?
答案1
维基百科上有一篇很好的文章应用程序包秒。
简而言之,.app
不是一个文件:它是一个具有特定结构的目录树。实际运行的二进制文件(即,您在 中找到的二进制文件的等价物/usr/bin
)是PackageName.app/Contents/MacOS/PackageName
。但是,您(通常)不能只将该文件复制到“/usr/bin”并运行它,因为它还需要在 .app 文件夹中包含许多其他所需的文件 - 例如,许多应用程序都有翻译文件,允许它们在 下以不同的语言显示 UI PackageName.app/Contents/Resources/de.lproj
(其中de
恰好表示german
)。
在某些情况下,.app
包中可能包含可直接执行的可执行文件 - 例如,我经常通过运行来使用包ebook-convert
中的二进制文件。在这种情况下,ebook-convert 恰好是一个独立的 Python 脚本,并且非常乐意以这种方式调用 - 并非所有可执行文件都会如此。calibre.app
/Applications/calibre.app/Contents/Resources/loaders/ebook-convert
.app
通常,您可以通过直接调用主二进制文件来启动- 例如,/Applications/Safari.app/Contents/MacOS/Safari
将启动 Safari。但是,这需要大量输入 - 这open /Applications/Safari.app
是一种可以执行相同操作的快捷方式。
man open
还有更多使用示例,open
就像用户双击了 Finder 中的图标一样。
答案2
正如 Tomas Markauskas 所说,.app 是一个捆绑包。
您为什么尝试将 .app 文件移动到 /usr/bin?我猜您真正想知道的是“当我在命令行时如何使用 Foo.app 打开文件?”
如果我没记错的话,答案不是将 .app 文件移动到 /usr/bin。正确的答案是使用以下命令open
:
$ open -a Foo some_file
使用open
不带的将使用其默认应用程序打开文件 - 就像在 Finder 中-a
双击一样。some_file
答案3
.app 实际上不是一个文件,而是一个包含许多不同文件的文件夹(或应用程序包)。它还包含您实际运行的可执行文件。
答案4
您也可以使用以下open
命令直接运行该应用程序:
open /Applications/Safari.app/