5 votos

Automáticamente salga de la Terminal al escribir exit

Escenario

Yo uso el terminal SSH mucho, sin embargo, como la Terminal de la Aplicación para dejar de fumar cuando la última Pestaña se cierra mediante la salida. Ya tengo la ventana de terminal fijado para cerrar en la salida correcta, sin embargo Terminal sigue funcionando. He seguido Ricky Campbell el tutorial de aquí que utiliza un AppleScript para salir de la terminal. El AppleScript funciona a la perfección cuando se ejecuta fuera de la Terminal, sin embargo de alguna manera no se puede obtener la trampa de comandos para el trabajo que necesita ser colocado en el terminal.

Para la referencia, voy a publicar el texto en cuestión aquí:

Ahora necesitamos una forma de patada de salida de la secuencia de comandos. Esto se puede hacer con el comando bash "trampa", teniendo que escuchar la señal de SALIDA. Ya quiero que esto suceda cada vez que mi usuario abre un shell, lo añado a mi .archivo de perfil. Puedo hacer esto con nano:

$ nano ~/.perfil

En este archivo, agregue el siguiente en algún lugar. Puede que necesite modificar la ruta de acceso al archivo AppleScript creado anteriormente:

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

Todo esto hace es escuchar la señal de SALIDA dentro de bash y cuando lo consigue, se ejecuta el script que hemos creado anteriormente.

Pregunta

¿Cómo ir sobre la solución de este problema. Por alguna razón, la trampa no es de cocción o de trabajo de la manera que debería, incluso después de muchos reinicios. Hay una forma alternativa de conseguir el Terminal de la Aplicación para cerrar la última pestaña sale?

Solución

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

4voto

Dave Penneys Puntos 3064

El enfoque que se dan aquí se ve un poco más sencillo, quizás trabaje para usted?

Si no quieren recordar a tipo de "salir" en lugar de "salir", y está usando bash, sólo tiene que añadir el siguiente a su .bashrc o shell script de inicio:

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

¿Qué hacer? Cuando el shell recibe la señal de 0 (cero), que es, dijo para salir, va a ejecutar este comando, ya que la última cosa que hace. Esto permite que su shell, etc, para salir con gracia, y pidiendo a la Terminal.aplicación para la salida a través de applescript asegura que hace lo mismo. En otras palabras, el tipo de "salida", y en el terminal de salidas, a continuación, el Terminal se cierra, todo limpio y la manera en que la naturaleza destina.

El hilo completo se puede encontrar aquí.

3voto

TAG Puntos 551

También puede utilizar esta enrevesada comando, que no desencadenar una advertencia acerca de la terminación de 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'

2voto

jm666 Puntos 4489

Usted no necesita trap de la señal.

Simplemente, poner el osascript comando en su ~/.bash_logout de archivos (crear, si no existe)

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

El .bash_logout es ejecutado por bash después de la sesión. Puede introducir cualquier comando de shell en este archivo, cada uno se ejecuta cuando la sesión.

Por ejemplo, puede abrir una ventana del Finder en la carpeta donde se fue el último, antes de salir, 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...

1voto

Peter Crabtree Puntos 577

Me parece que esta url para multi tabed Terminal de caso. 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 pestaña de la parte(exit) para cerrar pestaña actual)
Terminal > Preferencias > Configuración > Shell
Cuando el shell salidas: Cerca de si el shell salió limpiamente (o Cerrar la ventana)
Preguntar antes de cerrar: Nunca(o Sólo si hay procesos que no sean los inicios de sesión de shell y: Insertar "osascript")

para la última pestaña de la parte(exit (salir) para cerrar esta última ficha y todo el terminal de windows y salir de la Terminal.de la aplicación):
1) adjuntar ~/.bash_profile:

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

2) crear Scripts/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 ayude.

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