Как закрыть приложение «Терминал» с помощью командной строки терминала («выход») в macOS Catalina

Aug 16 2020

Я хочу закрыть терминал с помощью командной строки терминала.

Но когда я ввожу exitкоманду, Терминал только выходит из сеанса, но не закрывает окно приложения. Есть ли способ закрыть приложение.

Я использую macOS Catalina 10.15.6.

Ответы

17 user3439894 Aug 16 2020 at 10:50

В « Терминале» > « Настройки…» > « Профили» > « Оболочка» значение по умолчанию для параметра « При выходе из оболочки» : не закрывать окно.

Это можно изменить на: Закрыть окно

Затем exit команда закроет окно .


Отредактируйте, чтобы ответить на отредактированный вопрос:

Если вы хотите закрыть окно с помощью exit команды, вы можете сделать, как предложено в первой части этого ответа, однако, если вы также хотите автоматически и изящно закрыть Терминал , как часть вашего скрипта или вместо exit команды как показано в вашем вопросе, вы можете сделать следующее:

Сначала создайте простое приложение AppleScript, используя следующий пример кода AppleScript в редакторе сценариев :

tell application "Terminal" to if (busy of windows) does not contain true then quit

Сохраните его как приложение с именем, например, QuitTerminal в основной папке приложений .

После сохранения откройте Терминал, а затем откройте, например, QuitTerminal , чтобы активировать разрешения в Системных настройках > Безопасность и конфиденциальность > Конфиденциальность.

Как только это будет сделано, вы можете использовать следующее в конце вашего скрипта или вместо exit команды :

open -a "OuitTerminal"

Пример, основанный на команде, показанной в вашем вопросе:

/Users/harikrishna/Desktop/youtube.sh ; open -a "OuitTerminal"

Это закроется только терминал , если нет запущенных процессов в любом из окон в терминале .

Примечание. Если вы не хотите видеть, например, показ OuitTerminal в Dock , вы можете изменить приложение, используя следующую команду в Терминале :

defaults write '/Applications/OuitTerminal.app/Contents/Info.plist' LSUIElement -bool yes

Если вас не интересует какой-либо запущенный процесс, вы можете принудительно закрыть Терминал из сценария или команды, используя killall Terminalвместо exit; однако это беспорядочно, и я не рекомендую использовать его вместо того, что представлено выше.