Hi, Thanks to Timo and Christian for their answers. On Sun, Oct 21, 2018 at 3:32 AM Timo Kilpilehto <timo@xxxxxxxxxxxxx> wrote: > eval sh -c "echo none of this makes any difference" Where is it documented that ssh is going to eval my command? The fact remains that ssh does not transparently pass the command to the remote host. This pair of commands result in the same output (a blank line): $ dash -c echo 1 $ ssh localhost dash -c echo 1 However, the following three pairs of commands result in different output: $ dash -c 'echo 1' $ ssh localhost dash -c 'echo 1' $ dash -c echo\ 1 $ ssh localhost dash -c echo\ 1 $ dash -c 'echo\ 1' $ ssh localhost dash -c 'echo\ 1' It appears that what is happening is that ssh is flattening the multiple command arguments to a single string without escaping them. (I concede there may be no "standard" way to do such escaping.) It also appears that the ssh protocol defines the command as a single string, not an argv-style list of multiple strings. (See section 6.5 of https://www.ssh.com/a/rfc4254.txt .) It might be worth documenting the escape-less flattening of the command (and the corresponding loss of information) on the ssh manpage. I could write something and submit a patch, if the openssh developers are interested. Cheers, Parke _______________________________________________ openssh-unix-dev mailing list openssh-unix-dev@xxxxxxxxxxx https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev