Pregunta

Escenario

Yo uso de terminal SSH mucho, sin embargo le gustaría la App Terminal para dejar de fumar cuando la última pestaña se cierra utilizando la salida. Ya tengo la ventana de terminal en sí set para cerrar la salida exitosa, sin embargo terminal sigue funcionando. Seguí tutorial aquí que utiliza de Ricky Campbell un AppleScript para salir de la terminal. El AppleScript funciona perfectamente cuando se ejecuta fuera de la terminal, sin embargo, de alguna manera no puedo conseguir el comando trampa para el trabajo que tiene que ser colocado en el terminal.

Como referencia Voy a publicar el texto relevante aquí:

Ahora necesitamos una forma de patada de salida del script. Esto se puede hacer con el comando de bash “trampa”, hacer que escuche la señal de SALIDA. Ya que quiero que esto suceda cada vez que mi usuario abre una concha, lo añado a mi archivo .profile. Lo hago con nano:

$ nano ~ / .profile

En este archivo, agregue el siguiente lugar. Puede que tenga que modificar la ruta al archivo de AppleScript que creó anteriormente:

trampa '/ usr / bin / osascript $ HOME / Scripts / QuitTerminal.scpt' SALIR

Todo esto hace es escuchar la señal de salidas dentro de una fiesta y cuando lo consigue, se ejecuta la secuencia de comandos que hemos creado antes.

Pregunta

¿Cómo hago para solucionar este problema. Por alguna razón, la trampa no está disparando o trabajando como debería, incluso después de numerosos reinicios. ¿Hay una forma alternativa de obtener la aplicación Terminal de cierre cuando se cierra la última pestaña?

Solución

Los enlaces proporcionados por Dori llevó a la solución. El artículo sugiere que el comando trampa debe estar en .profile, cuando en realidad lo que tiene que ser colocado en .bashrc. Moverlo a la secuencia de comandos correcta solucionado el problema.

¿Fue útil?

Solución

El enfoque dan aquí se ve un poco más simple, tal vez sería trabajo para usted?

Si no quiere recordar que escribir "dejar de fumar" en lugar de "salida", y está utilizando bash, sólo tiene que añadir lo siguiente a su .bashrc u otro script de inicio del shell:

trap '/usr/bin/osascript -e "tell application \"terminal\" to quit"' 0

¿Qué se hace? Cuando el shell recibe la señal 0 (cero), es decir, le dijo a la salida, se ejecutará este comando como la última cosa que hace. Esto permite que su concha, etc, para salir con gracia, y pidiendo Terminal.app a la salida mediante AppleScript se asegura de que hace lo mismo. En otras palabras, el tipo de 'salida', y sus salidas de concha, a continuación, sale de terminales, toda la naturaleza limpia y la forma en que pretende.

El rosca completa se puede encontrar aquí .

Otros consejos

También puede utilizar este comando enrevesada, que no desencadena una advertencia acerca de poner fin a su propio proceso:

osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit

O, se podría definir un alias (como quit o exit) en su perfil:

alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'

no tiene por qué trap cualquier señal.

Simplemente, poner el comando en el archivo de osascript ~/.bash_logout (cree que, si no existe)

osascript -e "tell application \"Terminal\" to quit"

El .bash_logout es ejecutado por bash después de cerrar la sesión. Se puede introducir cualquier comando shell en este archivo, cada voluntad ejecutado cuando la sesión.

Por ejemplo, puede abrir una ventana del Finder en la carpeta en la que la última vez que, antes de la salida, con open . o como ...

open .
say "Good bye, my master - leaving terminal now, continue with Finder"
osascript -e "tell application \"Terminal\" to quit"

y así sucesivamente ...

Me determinar la URL, para el caso del terminal de usos múltiples tabed. http: // cyberdork33. wordpress.com/2010/05/25/make-osx-terminal-quit-when-last-window-closed/
Sólo probado en OS X 10.8.2
TL.DR:
para la parte de pestaña (Salir para cerrar la pestaña actual)
Terminal> Preferencias> Configuración> Shell
Cuando se sale de la cáscara: Cerrar si el shell salieron de forma inadecuada (o cerrar la ventana)
Indicación antes de cerrar: Nunca (o sólo si existen procesos distintos de los inicios de sesión Shell y: Insertar "osascript")

En la parte última pestaña (exit para cerrar esta última pestaña y ventanas de terminal enteros y salir Terminal.app):
1) anexados para ~/.bash_profile:

trap '/usr/bin/osascript $HOME/Scripts/QuitTerminal.scpt' EXIT

2) crear secuencias de comandos / QuitTerminal.scpt

tell application "Terminal"
    # If there is only one tab remaining, and it contains the word "logout"
    # then this is the final window
    if (count of (tabs of (every window whose visible is true))) = 1 then
        try
            set theContents to words of ((contents of tab 1 of window 1) as Unicode text)
            set exitLastTab to (theContents contains "logout")
        on error
            set exitLastTab to false
        end try

        if exitLastTab is true then
            quit
        end if

    else if (count of (tabs of (every window whose visible is true))) < 1 then
        # If no window remains open, then obviously we can quit the app.
        # This would occur when the final window is closed without 'exit'
        quit
    end if
end tell

Espero que ayuda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a apple.stackexchange
scroll top