Recientemente adquirí una nueva Mac con OS X Lion y la estoy adaptando a mis necesidades.
Estaba intentando configurar el cierre automático en la Terminal usando sus preferencias (como hice con Tiger y Snow Leopard) pero no funciona. Configuré "Cerrar si el shell salió limpiamente", pero cuando escribo exit
, la ventana se cierra, pero Terminal.app todavía está abierta. Su menú es visible, y con alt+ tabpuedo verlo en ejecución.
¿Alguna sugerencia?
Respuesta1
Esta opción nunca ha cerrado la aplicación Terminal.
Tenga en cuenta que las otras opciones están tituladasCierra elventanayNo cierres elventana(énfasismío), dejando en claro que esta configuración se refiere solo a cerrar elventana, no todosolicitud.
Podrías definir lo siguiente para tu shell, por ejemplo, en ~/.bash_profile
for bash
:
function exit {
osascript -e 'tell application "Terminal" to quit'
}
Luego agréguelas osascript
a la lista de aplicaciones que no requieren confirmación antes de salir (en Preferencias > Configuración > Shell). Escriba exit
para salir de Terminal, a menos que haya otras pestañas con programas de bloqueo ejecutándose.
Puedes darle un nombre diferente para separarlo del normal exit
, por supuesto. Me gusta quit
por esto.
Respuesta2
Para que Terminal se cierre después de cerrar el último terminal/shell, puede hacer que su shell ejecute un AppleScript al salir:
# 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
La prueba para Apple_Terminal garantiza que este código solo tenga efecto cuando se ejecuta dentro de Terminal.
Dado que esto se ejecuta de forma asincrónica, el script puede ejecutarse antes o después de que se cierre la terminal que lo contiene (aunque generalmente se ejecuta después), y si este terminal se cierra porque el usuario salió de Terminal, es posible que Terminal ya no se esté ejecutando cuando se ejecuta el script, por lo tanto :
- Primero comprueba si la Terminal todavía se está ejecutando. Si no, no hace nada.
- Sólo se cierra si no hay terminales abiertas o solo la del tty actual. Comprueba si hay pestañas distintas a la del dispositivo tty al que está conectado el shell actual "$(tty)".
Tenga en cuenta que si invoca cualquier otro código de shell que atrape EXIT, estos interferirán entre sí. La solución es crear otra función que llame a las demás y "capture la_otra_función EXIT" para invocar todo cuando se cierre el shell.
Por cierto, como siempre, si esta funcionalidad es importante para usted, presente una solicitud de mejora a Apple. Solicite una configuración de preferencia para cerrar Terminal cuando no haya más ventanas abiertas:https://bugreport.apple.com/
Respuesta3
Como una buena solución, intente-
abrir -a /Aplicaciones/Utilidades/Terminal.app *.py O abrir -b com.apple.terminal *.py
Para el shell iniciado, puede ir a Preferencias > Shell > configurarlo para que salga si no hay error.
Esto lo uso a menudo cuando necesito ejecutar casi simultáneamente muchos scripts/comandos.
Eso es todo.
Respuesta4
Una solución mucho más fácil y elegante sería establecer un alias en su .bash_profile como este comando:
alias quit="killall Terminal"
Hermosa, ¿eh?