Come chiudere l'app Terminale utilizzando la riga di comando del terminale ("uscita") in macOS Catalina

Aug 16 2020

Voglio chiudere il terminale usando la riga di comando del terminale.

Ma quando inserisco il exitcomando, Terminal disconnette solo la sessione ma non chiude la finestra dell'app. C'è un modo per chiudere anche l'app.

Sto eseguendo macOS Catalina 10.15.6.

Risposte

17 user3439894 Aug 16 2020 at 10:50

In Terminale > Preferenze ... > Profili > Shell , l'impostazione predefinita per Quando la shell esce: è: Non chiudere la finestra

Questo può essere modificato in: Chiudi la finestra

Quindi il exit comando chiuderà la finestra .


Modifica per affrontare la domanda modificata:

Se vuoi chiudere la finestra usando il exit comando puoi fare come suggerito nella prima parte di questa risposta, tuttavia, se vuoi anche chiudere automaticamente e con garbo anche Terminal , come parte del tuo script o al posto del exit comando come mostrato nella tua domanda, puoi eseguire le seguenti operazioni:

Creare prima una semplice applicazione AppleScript utilizzando il seguente codice AppleScript di esempio in Script Editor :

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

Salvandolo come un'applicazione denominata ad esempio QuitTerminal nella cartella Applicazioni principale .

Dopo averlo salvato, apri Terminale e quindi apri ad esempio QuitTerminal per attivare le autorizzazioni di autorizzazione in Preferenze di Sistema > Sicurezza e Privacy > Privacy

Una volta fatto questo, puoi quindi utilizzare quanto segue alla fine dello script o al posto del exit comando :

open -a "OuitTerminal"

Esempio basato sul comando mostrato nella tua domanda:

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

Questo chiuderà Terminal solo se non ci sono processi in esecuzione in nessuna delle finestre di Terminal .

Nota: se non si desidera vedere, ad esempio, lo spettacolo OuitTerminal nel Dock , è possibile modificare l' applicazione utilizzando il seguente comando nel Terminale :

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

Se non ti interessa alcun processo in esecuzione, puoi forzare la chiusura del Terminale dallo script o dal comando usando killall Terminalal posto di exit; tuttavia questo è disordinato e non consiglio di usarlo sopra quanto presentato sopra.