.app 应用程序和 /usr/bin 中的文件有什么区别?

.app 应用程序和 /usr/bin 中的文件有什么区别?

我不太明白其中的区别。我尝试将 .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/

相关内容