Comment puis-je fermer automatiquement Terminal.app à la sortie de OS X Lion?

J'ai récemment acquis un nouveau Mac avec OS X Lion, et je l'ai réglé pour mes besoins.

J'essayais de configurer un autoclose sur Terminal en utilisant ses préférences (comme je l'ai fait avec Tiger et Snow Leopard) mais ça ne fonctionne pas. J'ai défini "Fermer si le shell est sorti proprement" mais lorsque je saisis exit , la fenêtre se ferme, mais Terminal.app est toujours ouvert. Son menu est visible, et avec l' onglet alt +, je peux le voir en cours d'exécution.

Aucune suggestion?

Cette option n'a jamais fermé l'application Terminal.

Notez que les autres options sont intitulées Fermez la fenêtre et Ne fermez pas la fenêtre ( accent mienne), ce qui indique que ce paramètre se réfère uniquement à la fermeture de la fenêtre et non à l'ensemble de l' application .


Vous pouvez définir ce qui suit pour votre shell, par exemple dans ~/.bash_profile pour bash :

 function exit { osascript -e 'tell application "Terminal" to quit' } 

Ensuite, ajoutez osascript à la liste des applications qui ne nécessitent pas de confirmation avant de quitter (dans Préférences> Paramètres> Shell). Tapez exit pour quitter Terminal, sauf s'il existe d'autres onglets avec des programmes de blocage en cours d'exécution.

Vous pouvez lui donner un nom différent pour séparer d'une exit régulière, bien sûr. J'aime quit pour cela.

Comme solution soignée, essayez-

Ouvrir -a /Applications/Utilities/Terminal.app * .py OU ouvrir -b com.apple.terminal * .py

Pour le shell lancé, vous pouvez accéder à Préférences> Shell> configurer pour sortir s'il n'y a pas d'erreur.

Cela j'utilise souvent lorsque je dois presque simultanément exécuter plusieurs scripts / commandes.

C'est tout.

Pour terminer le terminal après avoir fermé le dernier terminal / shell, votre shell peut exécuter un AppleScript lors de la sortie:

 # Quit Terminal when this shell exists if there are no other terminals open. if [ "$TERM_PROGRAM" == "Apple_Terminal" ]; then quit_terminal_when_no_terminals_remain() { osascript -e 'tell application "Terminal" to if running and (count every tab of every window whose tty is not "'"$(tty)"'") is 0 then quit' } trap quit_terminal_when_no_terminals_remain EXIT fi 

Le test pour Apple_Terminal garantit que ce code ne prend effet que lorsqu'il se déroule à l'intérieur du terminal.

Comme cela s'exécute de manière asynchrone, le script peut être exécuté avant ou après que le terminal contenant le contenu est fermé (bien qu'il fonctionne habituellement après) et si ce terminal est fermé car l'utilisateur quitte le terminal, le terminal peut ne plus fonctionner lorsque le script s'exécute. :

  1. Tout d'abord, il vérifie si Terminal est toujours en cours d'exécution. Sinon, cela ne fait rien.
  2. Il ne quitte que s'il n'y a pas de terminal ouvert ou le seul pour le tty actuel. Il vérifie s'il existe des onglets autres que celui du périphérique tty auquel le shell actuel est connecté "$ (tty)".

Notez que si vous invoquez un autre code shell qui piège EXIT, cela interférera les uns avec les autres. La solution consiste à créer une autre fonction qui appelle les autres et "piéger la" EXIT "pour appeler tout lorsque le shell est sorti.

En passant, comme toujours, si cette fonctionnalité est importante pour vous, veuillez déposer une requête d'amélioration auprès de Apple. Demandez un paramètre de préférence pour que Terminer quitte alors qu'il n'y a plus de fenêtres ouvertes: https://bugreport.apple.com/

Une solution beaucoup plus facile et élégante serait de définir un alias dans votre .bash_profile comme cette commande:

 alias quit="killall Terminal" 

Belle, hein?