]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
authorMichael Albinus <michael.albinus@gmx.de>
Tue, 14 Oct 2014 11:59:16 +0000 (13:59 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Tue, 14 Oct 2014 11:59:16 +0000 (13:59 +0200)
Reduce the amount of set environment variable commands.

lisp/ChangeLog
lisp/net/tramp-sh.el

index 41c68d7fbee4fa3130147f0f81fe13b0e515199f..055ec17160e4cb9238e2942893098b10edfa0600 100644 (file)
@@ -1,3 +1,9 @@
+2014-10-14  Jérémy Compostella  <jeremy.compostella@intel.com>
+           Michael Albinus  <michael.albinus@gmx.de>
+
+       * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
+       Reduce the amount of set environment variable commands.
+
 2014-10-12  Fabián Ezequiel Gallina  <fgallina@gnu.org>
 
        Fix import completion.  (Bug#18582)
index 65b64233e5c9adca7c6668a2f31feecdce5ca65b..ce5e2faff50795307ea68d4d24eba4aae71e96d0 100644 (file)
@@ -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,22 @@ 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" (car item) (cdr item)) vars)
        (push (car item) unset))
       (setq env (cdr env)))
+    (when vars
+      (tramp-send-command
+       vec
+       (format "while read var val; do export $var=$val; done <<'%s'\n%s\n%s"
+              tramp-end-of-heredoc
+              (mapconcat 'identity vars "\n")
+              tramp-end-of-heredoc)
+       t))
     (when unset
       (tramp-send-command
        vec (format "unset %s" (mapconcat 'identity unset " ")) t))))