From: Simon Ruderich Date: Fri, 23 Apr 2010 20:07:04 +0000 (+0200) Subject: zsh/rc: Use exec when automatically starting screen. X-Git-Url: https://ruderich.org/simon/gitweb/?a=commitdiff_plain;h=81fe12757189bc144a22271f5bc669dd98ea2c37;p=config%2Fdotfiles.git zsh/rc: Use exec when automatically starting screen. This needs one less shell on the server and makes it faster to detach (no need to exit the first shell). --- diff --git a/zsh/rc b/zsh/rc index 1a30e83..94d7fe3 100644 --- a/zsh/rc +++ b/zsh/rc @@ -245,6 +245,9 @@ unset red blue green yellow default # screen is running on the remote machine instead of @screen @:hostname # (hostname replaced by the machine's hostname) is displayed. This only works # if the .zshrc on the server also uses this command. +# +# screen* is necessary as `screen` uses screen.linux for example for a linux +# console. if [[ $TERM == screen* || $TERM == xterm* || $TERM == rxvt* ]]; then # Is set to a non empty value to reset the window name in the next # precmd() call. @@ -532,18 +535,16 @@ source_config ~/.zsh host rc ${$(hostname)//.*/} # RUN COMMANDS # If not already in screen reattach to a running session or create a new one. -# -# screen* is necessary as `screen` uses screen.linux for example for a linux -# console which would otherwise cause an infinite loop. -if [[ $TERM != screen* && $TERM != 'dumb' ]]; then +# This also starts screen one a remote server when connecting through ssh. +if [[ $TERM != dumb && -z $STY ]]; then # Get running detached sessions. session=$(screen -list | grep 'Detached' | awk '{ print $1; exit }') # Create a new session if none is running. if [[ -z $session ]]; then - screen + exec screen # Reattach to a running session. else - screen -r $session + exec screen -r $session fi fi