>From 4a8437d5c7a503f19dc11d4dbe738e501c4058f0 Mon Sep 17 00:00:00 2001 From: Jeremy Compostella Date: Sun, 12 Oct 2014 20:40:27 +0200 Subject: [PATCH] * tramp.sh.el: (tramp-open-connection-setup-interactive-shell): Reduce the amount of set environment variable commands When the latency to the server is important, each shell command to set a unique environment variable is painful. This patch gathers the PS[1-3] and PROMPT_COMMAND variables and all the variables defined in `tramp-remote-process-environment' in two shell commands. --- lisp/tramp-sh.el | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lisp/tramp-sh.el b/lisp/tramp-sh.el index a01d173..7f5dabd 100644 --- a/lisp/tramp-sh.el +++ b/lisp/tramp-sh.el @@ -3955,10 +3955,8 @@ process to set up. VEC specifies the connection." (tramp-message vec 5 "Setting shell prompt") (tramp-send-command - vec (format "PS1=%s" (tramp-shell-quote-argument tramp-end-of-output)) t) - (tramp-send-command vec "PS2=''" t) - (tramp-send-command vec "PS3=''" t) - (tramp-send-command vec "PROMPT_COMMAND=''" t) + vec (format "PS1=%s PS2='' PS3='' PROMPT_COMMAND=''" + (tramp-shell-quote-argument tramp-end-of-output)) t) ;; Try to set up the coding system correctly. ;; CCC this can't be the right way to do it. Hm. @@ -4078,15 +4076,17 @@ process to set up. VEC specifies the connection." (let ((env (append (when (tramp-get-remote-locale vec) ; Discard `(nil)'. `(,(tramp-get-remote-locale vec))) (copy-sequence tramp-remote-process-environment))) - unset item) + unset vars item) (while env (setq item (tramp-compat-split-string (car env) "=")) (setcdr item (mapconcat 'identity (cdr item) "=")) (if (and (stringp (cdr item)) (not (string-equal (cdr item) ""))) - (tramp-send-command - vec (format "%s=%s; export %s" (car item) (cdr item) (car item)) t) + (push (format "%s=%s; export %s" (car item) (cdr item) (car item)) vars) (push (car item) unset)) (setq env (cdr env))) + (when vars + (tramp-send-command + vec (mapconcat 'identity vars " ; "))) (when unset (tramp-send-command vec (format "unset %s" (mapconcat 'identity unset " ")) t)))) -- 1.9.1