1

Я хочу, чтобы /Users/me/dir/executable запускался при каждом входе в систему.

Вы можете думать о исполняемом файле как о текстовом файле, который имеет права на выполнение и содержит что-то вроде этого: javaws http://some/url

Предыдущее предложение может быть ключом к ответу. Выполнение чего-то вроде chrome не оставляет за окном терминала, но выполнение текстового файла делает.

Я настроил элемент входа, который указывает на этот исполняемый текстовый файл, и я установил флажок Скрыть (не уверен, что это делает).

Теперь при каждом входе в систему появляется окно терминала, связанное с этим элементом входа. Окно говорит

Last login: (timestamp)
/Users/me/dir/executable ; exit;
machine:~ me$ /Users/me/dir/executable ; exit;
logout

[Process completed]

Я узнал, что мне нужно снять флажок « Reopen windows when logging back in , чтобы эти окна не накапливались с течением времени. Но я хотел бы полностью скрыть / устранить окно.

Как я могу получить элемент входа, который не остается за окном терминала?

Примечание: я подумал об использовании launchd. Но то, что я хочу запустить, имеет / хочет, чтобы пользовательский интерфейс был скрыт в фоновом режиме, а не то, что я хочу делать.

1 ответ1

1
  1. Создайте однострочный AppleScript:
    сделать сценарий оболочки "/Users/me/dir/ исполняемый"

  2. Сохранить как приложение «MyScript.app» (без начального экрана)

  3. Добавьте MyScript.app для входа в систему.

Оригинальный плакат эффективно создал файл сценария оболочки. Если это будет добавлено к элементам входа, службы запуска OS X откроют приложение терминала для обработки сценария. Это откроет окно терминала, как объяснил ОП. Поведение терминала по умолчанию - оставить окно оболочки открытым при выходе из оболочки. Это может быть изменено как глобальное предпочтение терминала, но это может быть нежелательно, и даже если вы сделаете это, приложение терминала останется открытым.

Команда "do shell script" в AppleScript открывает процесс оболочки без вывода сообщений, возвращает любой вывод в AppleScript и закрывает оболочку. AppleScript, сохраненный как исполняемое приложение, работает в режиме без вывода сообщений и завершает работу (если вы не укажете взаимодействие с пользователем в диалоговых окнах и т.д.). Двухэтапное решение может показаться неуклюжим, но кроме усилий по настройке запуска процесса, я не знаю другого пути.

Launchd также будет работать, так как launchd может порождать процесс с помощью пользовательского интерфейса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .