Adquiri recentemente um novo Mac com OS X Lion e estou ajustando-o de acordo com minhas necessidades.
Eu estava tentando configurar o fechamento automático 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 digito exit
, a janela é fechada, mas o Terminal.app ainda está aberto. Seu menu está visível e com alt+ tabposso vê-lo funcionando.
Alguma sugestão?
Responder1
Esta opção nunca fechou o aplicativo Terminal.
Observe que as outras opções são intituladasFeche ojanelaeNão feche ojanela(ênfasemeu), deixando claro que esta configuração se refere apenas ao fechamento dojanela, não a totalidadeaplicativo.
Você pode definir o seguinte para o seu shell, por exemplo, em ~/.bash_profile
for bash
:
function exit {
osascript -e 'tell application "Terminal" to quit'
}
Em seguida, adicione osascript
à lista de aplicativos que não requerem 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 nome normal exit
, é claro. Eu gosto quit
disso.
Responder2
Para que o Terminal feche depois de fechar o último terminal/shell, você pode fazer com que 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 Apple_Terminal garante que esse código só tenha efeito quando executado dentro do Terminal.
Como é executado de forma assíncrona, o script pode ser executado antes ou depois do terminal que o contém ser fechado (embora geralmente seja executado depois), e se este terminal for fechado porque o usuário saiu do Terminal, o Terminal pode não estar mais em execução quando o script for executado, portanto :
- Primeiro, ele verifica se o Terminal ainda está em execução. Se não, não faz nada.
- Ele só fecha se não houver terminais abertos ou apenas aquele para o tty atual. Ele verifica se há alguma aba diferente daquela do dispositivo tty ao qual o shell atual está conectado "$(tty)".
Observe que se você invocar qualquer outro código shell que intercepte EXIT, eles interferirão um no outro. A solução é criar outra função que chame as outras e "trap the_other_function EXIT" para invocar tudo quando o shell sair.
A propósito, como sempre, se esta funcionalidade for importante para você, faça uma solicitação de melhoria à Apple. Peça uma configuração de preferência para fazer o Terminal encerrar quando não houver mais janelas abertas:https://bugreport.apple.com/
Responder3
Como uma solução interessante, tente-
open -a /Applications/Utilities/Terminal.app *.py OU open -b com.apple.terminal *.py
Para o shell iniciado, você pode ir em Preferências > Shell > configurá-lo para sair se não houver erro.
Isso eu costumo usar quando preciso executar muitos scripts/comandos quase simultaneamente.
É isso.
Responder4
Uma solução elegante muito mais fácil seria definir um alias em seu .bash_profile como este comando:
alias quit="killall Terminal"
Lindo, né?