Hi Michael,

replacing EOF delimiter by a md5sum works well.

The process substitution works only for real bash shells, or zsh.
It does not work with sh or busybox.

So I think we have two solutions here:
 - Support multiple methods, chosen by user configuration:
   -> bash -c "cmd" which doesn't support very long commands
   -> bash <<EOF which doesn't support stdin
   -> bash <(cat <<EOF) which supports all but which doesn't works on basic shells like sh or busybox (works with bash and zsh)
 - Reproduce method 3 by writting commands in a target's temporary file, launch the shell with this file in argument, and finally remove the file from the target.

The last solution have the major drawback to execute extra commands each time and to have a writable filesystem usable on the target

Cheers,
-- 
Sylvain


2014-02-03 Michael Albinus <michael.albinus@gmx.de>:
Sylvain Chouleur <sylvain.chouleur@gmail.com> writes:

> Hi,

Hi Sylvain,

> Here is my proposal (patch in attachment)
>
> exec env PS1=.. bash <(cat <<'EOF'
> heredoc commands
> EOF
> )

Thanks for this. However, I'm not sure whether all bourne shell
derivates support process substitution <().

What if Tramp uses another heredoc delimeter but 'EOF'? I've appended a
respective patch; could you, please, check?

If it doesn't work for you, please set tramp-verbose to 6, and rerun
your test. I would like to see the Tramp debug buffer then. Explain
also, what you have invoked, and how.

Best regards, Michael.