I'm sorry, may be I was not clear:

replacing EOF by another delimiter does not solve anything, it just make the way tramp uses heredocs more robust because it avoids conflicts with user commands potentially using the same delimiter.

That said, we still have the original issue of the bz I raised:
by executing tramp shell commands in this way:
exec <<'EOF' bash
<commands>
EOF

we loose the possibility to send user inputs to bash, so commands like 'read' will not work.
That's why I proposed the two approaches to handle your problem (long line arguments) and my problem (bash stdin)

-- 
Sylvain


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

> Hi Michael,

Hi Sylvain,

> replacing EOF delimiter by a md5sum works well.

Good.

> 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

I don't get your point. If my patch works well (as you said above), why
do you want to change something else?

If you still have problems with my patch, please give me an exact recipe
what triggers the problem. I cannot reproduce the problem here, sorry.
A Tramp debug buffer, produced with tramp-verbose set to 6, would help.

> Cheers,

Best regards, Michael.