Costumo trabalhar em vários projetos Python ao mesmo tempo, cada um com seu próprio ambiente virtual e guia de terminal. Eu uso o virtualenvwrapper para gerenciar meus virtuaisenvs.
Gosto de ter cada guia de terminal com o nome do projeto carregado nela, então mudei meu script de pré-ativação para ficar assim:
#!/bin/bash
# This hook is run after every virtualenv is activated.
# The environment name is passed as argument
# renames the current os x terminal tab title
printf "e]1;$1a"
Agora, sempre que eu mudo para um virtualenv com o workon
comando, minha guia é atualizada automaticamente.
Eu adicionei um comando semelhante ao comando predeactivate para remover o nome da guia do terminal:
#!/bin/bash
# This hook is run before every virtualenv is deactivated.
# remove virtualenv name from terminal tab name
printf "e]1;a"
Isso também funciona com o iTerm2.