1 votos

Cerrar el Terminal con 'exit' cuando sólo hay una ventana, cerrar la ventana en caso contrario

Cuando uso la aplicación Terminal quiero cerrarla usando el comando exit si sólo hay una ventana de Terminal abierta. Si hay más de una ventana abierta, quiero cerrar sólo la ventana que ejecutó el comando de salida.

Para conseguir este comportamiento utilizo la siguiente función en mi .bash_profile

function exit {
    if [ $(who | wc -l) -eq 2 ]; then
        osascript -e 'tell application "Terminal" to quit'
    else
        osascript -e 'tell application "Terminal" to close first window'
    fi
}

Todo funciona muy bien, pero el uso de $(who | wc -l) -eq 2 parece ser un poco hacky . En particular, esto sólo funciona si la máquina es utilizada por un solo usuario. ¿Hay alguna otra manera de hacer el trabajo?

2voto

Tony Williams Puntos 4903

¡Buenos golpes!

Si quieres cubrir el caso extremo de que haya varias personas conectadas al Mac y ejecutando Terminal, te sugiero que cambies el test if por if [ $(ps | wc -l) -eq 3 ]; lo que significaría que su usuario sólo tiene un proceso en ejecución, el bash shell que desea salir y abandonar el Terminal.

Personalmente, utilizo iTerm2 que tiene una preferencia (en "General") para "Salir cuando se cierran todas las ventanas" para que la aplicación se encargue de ello. Si has llegado hasta aquí con bash Recomiendo encarecidamente iTerm2.

Por cierto, tu método se rompe en iTerm2 ya que sólo muestra un inicio de sesión con who sin importar el número de ventanas que tengas abiertas. Mi solución a veces puede fallar al reconocer una sola ventana si las cierras rápidamente en iTerm2 ya que la aplicación tarda un par de segundos en cerrar la instancia del servidor de ventanas.

Si tienes tanto Terminal como iTerm en ejecución entonces rompe todo lo que se me ocurre también pero sólo lo harías si fueras un usuario constante de iTerm2 respondiendo a una pregunta en AskDifferent sobre Terminal. :)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X