Como fecho automaticamente o Terminal.app ao sair do OS X Lion?

3

Adquiri recentemente um novo Mac com o OS X Lion e estou adaptando-o às minhas necessidades.

Eu estava tentando configurar o autoclose no Terminal usando suas preferências (como fiz com o Tiger e o Snow Leopard), mas não está funcionando. Eu configurei "Fechar se o shell saiu corretamente", mas quando eu digito exit , a janela é fechada, mas o Terminal.app ainda está aberto. Seu menu é visível, e com a aba alt + eu posso vê-lo rodando.

Alguma sugestão?

    
por mTorres 08.09.2011 / 19:22

4 respostas

8

Esta opção nunca fechou o aplicativo Terminal.

Note que as outras opções são intituladas Feche a janela e Não feche a janela (< strong> emphasis mine), deixando claro que esta configuração se refere apenas ao fechamento da janela , não a toda a aplicação .

Você pode definir o seguinte para o seu shell, por exemplo, em ~/.bash_profile para bash :

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

Em seguida, adicione osascript à lista de aplicativos que não exigem confirmação antes de sair (em Preferências > Configurações > Shell). Digite exit para sair do Terminal, a menos que haja outras guias com programas de bloqueio em execução.

Você pode dar um nome diferente para separar de um exit normal, é claro. Eu gosto de quit para isso.

    
por 08.09.2011 / 20:05
1

Como uma boa solução, tente -

abra -a /Applications/Utilities/Terminal.app * .py     OU open -b com.apple.terminal * .py

Para o shell lançado, você pode ir para Preferências > Shell > defina para sair se não houver erros.

Isso eu geralmente uso quando preciso quase simultaneamente executar muitos scripts / comandos.

É isso.

    
por 18.06.2013 / 15:29
0

Para que o Terminal seja encerrado após você fechar o último terminal / shell, você pode fazer com que o seu shell execute um AppleScript ao sair:

# 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

O teste para o Apple_Terminal garante que este código só tenha efeito quando executado dentro do Terminal.

Como isso é executado de forma assíncrona, o script pode ser executado antes ou depois que o terminal que o contém é fechado (embora geralmente seja executado depois) e se esse terminal for fechado porque o usuário encerrou o Terminal, o Terminal pode não estar mais em execução quando o script corre, portanto:

  1. Primeiro, verifica se o Terminal ainda está em execução. Se não, não faz nada.
  2. Sairá somente se não houver nenhum terminal aberto ou somente aquele para o tty atual. Ele verifica se há alguma aba diferente daquela para o dispositivo tty ao qual o shell atual está conectado "$ (tty)".

Observe que, se você invocar qualquer outro código de shell que captura o EXIT, eles interferirão um no outro. A solução é criar outra função que chame os outros e "interceptar a_autra_função EXIT" para invocar tudo quando o shell sair.

A propósito, como sempre, se essa funcionalidade for importante para você, registre uma solicitação de melhoria com a Apple. Solicite uma configuração de preferência para que o Terminal seja encerrado quando não houver mais janelas abertas: link

    
por 13.09.2011 / 04:59
0

Uma solução muito mais fácil e elegante seria definir um alias no seu .bash_profile como este comando:

alias quit="killall Terminal"

Linda, uh?

    
por 24.11.2011 / 20:37