I use a screen session w/ multiple windows at work on the server, which I attach to every morning. Then I have all of the setup that I was working on the previous day right there in front of me.
Some screen hacks:
* I use grabssh[1] so that I can get ssh-agent forwarding working again when I reattach. ssh into the server, run grabssh, then reattach the screen session. Now all of my shells in the session can source fixssh to update their environment.
* I also use a wrapper for ssh within a screen session:
function screen_ssh_wrapper()
{
if [ -n "$STY" ]; then
HOST=$(echo "$1" | sed -e 's,[a-zA-Z0-9],,g')
if [ -z "$HOST" ]; then
# Note: We need all of these vars b/c we want the ssh command to
# inherit them from the current shell, and *not* from screen (for
# long-running screen sessions, those values may be out of date)
screen -t "$1" \
env \
SSH_CLIENT="$SSH_CLIENT" \
SSH_TTY="$SSH_TTY" \
SSH_AUTH_SOCK="$SSH_AUTH_SOCK" \
SSH_CONNECTION="SSH_CONNECTION" \
DISPLAY="$DISPLAY" \
ssh "$@"
return
fi
fi
ssh "$@"
}
alias ssh='screen_ssh_wrapper'
[1] http://samrowe.com/wordpress/ssh-agent-and-gnu-screen/