A Wikipédia tem um bom artigo sobre Pacote de aplicativos s.
Em suma, um .app não é um arquivo: é uma árvore de diretórios com uma estrutura específica. O binário real que é executado (ou seja, o equivalente do binário que você encontraria em /usr/bin ) é PackageName.app/Contents/MacOS/PackageName . No entanto, você (geralmente) não pode simplesmente copiar o arquivo para '/ usr / bin' e executá-lo, porque ele espera ter muitos outros arquivos necessários dentro da pasta .app - por exemplo, muitos aplicativos têm os arquivos de tradução que permitem que eles apresentem a interface do usuário em diferentes idiomas em PackageName.app/Contents/Resources/de.lproj (onde de significa german ).
Em alguns casos, o pacote .app pode conter executáveis que você pode executar diretamente - por exemplo, eu geralmente uso o binário ebook-convert do pacote calibre.app , executando /Applications/calibre.app/Contents/Resources/loaders/ebook-convert . Neste caso, o e-book-convertido é um script python auto-suficiente e é perfeitamente feliz de ser chamado assim - nem todos os executáveis serão tão felizes.
Normalmente, você pode iniciar um .app chamando o binário principal diretamente - por exemplo, /Applications/Safari.app/Contents/MacOS/Safari iniciará o Safari. No entanto, isso é um monte de digitação - open /Applications/Safari.app é um atalho que faz a mesma coisa.
man open tem muitos outros exemplos de usar open para agir como se o usuário tivesse clicado duas vezes em um ícone no localizador.