]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
zsh/rc: Use exec when automatically starting screen.
authorSimon Ruderich <simon@ruderich.org>
Fri, 23 Apr 2010 20:07:04 +0000 (22:07 +0200)
committerSimon Ruderich <simon@ruderich.org>
Fri, 23 Apr 2010 20:07:04 +0000 (22:07 +0200)
This needs one less shell on the server and makes it faster to detach
(no need to exit the first shell).

zsh/rc

diff --git a/zsh/rc b/zsh/rc
index 1a30e83094e3b79c399731437295dcabe49d36da..94d7fe37208874c0b79a2cafb23414ce24f41568 100644 (file)
--- 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