From 81fe12757189bc144a22271f5bc669dd98ea2c37 Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Fri, 23 Apr 2010 22:07:04 +0200 Subject: [PATCH] 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). --- zsh/rc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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 -- 2.45.2