MacOS, различия между запуском связанного приложения и запуском исполняемого файла пакета

Может ли кто-нибудь уточнить различия в OSX между запуском связанного приложения, выполнив одно из следующих действий:

  • двойной щелчок по нему
  • найдите его и запустите из прожектора
  • открыть /Приложение/MyApp.app

или просто запустив его исполняемый файл в Терминале:

  • $ /Application/MyApp.app/Contents/MacOS/myapp (исполняемый двоичный файл)

Ответы (1)

В большинстве случаев разницы нет. Однако внутри каждого пакета приложений есть файл Info.plist, содержащий информацию о приложении, полезном (в основном) для Mac OS X (типы файлов, с которыми оно работает, и т. д.).

Но файл Info.plist также может содержать информацию о среде, в которой должно работать приложение. Например, файл Info.plist может содержать переменные среды, которые необходимо установить перед запуском исполняемого файла. Если вы запускаете исполняемый файл самостоятельно (в командной строке), эти переменные не будут установлены, и поведение приложения может быть другим.

РЕДАКТИРОВАТЬ: Чтобы уточнить это немного дальше, если вы щелкните правой кнопкой мыши приложение и «Показать содержимое пакета», затем перейдите к «Содержимому: MacOS» и дважды щелкните значок исполняемого файла в этом каталоге, вы также обойдете запуск службы и информация в файле Info.plist будут игнорироваться. Таким образом, вы можете делать в Finder то, что вы делаете в командной строке (конечно, без параметров командной строки).

У меня сложилось впечатление, что info.plist читается во всех случаях (даже если вызывается из командной строки). У вас есть ссылка или пример, который показывает обратное?
Если вы запускаете исполняемый файл непосредственно в командной строке (как спрашивал ОП), то новый процесс создается оболочкой без учета служб запуска или настроек в файле Info.plist. Способ продемонстрировать это — создать сценарий оболочки, который записывает ваш домашний каталог в системный журнал, а затем использовать Platypus для встраивания его в комплект приложений. Затем отредактируйте файл Info.plist, чтобы переопределить переменную среды $HOME. Когда вы запустите приложение, ваш переопределенный текст появится в системном журнале. Но если вы запустите исполняемый файл в комплекте в командной строке, он запишет ваш домашний каталог в системный журнал.
Еще один момент, который может быть в Contents: интернационализация (переводы текстовых строк на другие языки).
@WGroleau, это лишь одна из многих вещей, которые могут быть в комплекте, не стоит просто упоминать об этом. Я думаю, вам нужно гораздо подробнее объяснить, что такое бандл. например, Руководство по программированию Apple Bundle
Другие уже упомянуты в ответе.