Dominique Quatravaux <[email protected]> writes:
Hi Dominique,
> It turns out that when a="Foo Bar",
>
> export b=$a
>
> does what we want, but
>
> export $b=$a
>
> doesn't, regardless of the value of b.
Thanks for the report!
> diff --git a/lisp/tramp-sh.el b/lisp/tramp-sh.el
> index 419dccb..b45cf29 100644
> --- a/lisp/tramp-sh.el
> +++ b/lisp/tramp-sh.el
> @@ -4201,7 +4201,7 @@ process to set up. VEC specifies the connection."
> (when vars
> (tramp-send-command
> vec
> - (format "while read var val; do export $var=$val; done <<'%s'\n%s\n%s"
> + (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)
Well, I'm not in favor to embed $val with double quotation marks. $val
itself could be '' (two single quotation marks), telling us "the empty
string". With your patch, '' would be taken literally.
Instead, I prefer the following patch:
--8<---------------cut here---------------start------------->8---
***
/home/albinus/src/tramp/lisp/tramp-sh.el.~2146f5850aef5a4abcbb97178114f82f251cf70c~
2016-12-14 21:39:22.073812497 +0100
--- /home/albinus/src/tramp/lisp/tramp-sh.el 2016-12-14 21:39:07.520363653
+0100
***************
*** 4196,4207 ****
(setq item (split-string item "=" 'omit))
(setcdr item (mapconcat 'identity (cdr item) "="))
(if (and (stringp (cdr item)) (not (string-equal (cdr item) "")))
! (push (format "%s %s" (car item) (cdr item)) vars)
(push (car item) unset)))
(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)
--- 4196,4210 ----
(setq item (split-string item "=" 'omit))
(setcdr item (mapconcat 'identity (cdr item) "="))
(if (and (stringp (cdr item)) (not (string-equal (cdr item) "")))
! (push
! (format
! "export %s=%s" (car item) (tramp-shell-quote-argument (cdr item)))
! vars)
(push (car item) unset)))
(when vars
(tramp-send-command
vec
! (format "while read -r var; do eval $var; done <<'%s'\n%s\n%s"
tramp-end-of-heredoc
(mapconcat 'identity vars "\n")
tramp-end-of-heredoc)
--8<---------------cut here---------------end--------------->8---
Does this work for you?
Best regards, Michael.
_______________________________________________
Tramp-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/tramp-devel