Subject: bug#16582: Bug: tramp shell command doesn't read stdin

From: Sylvain Chouleur <[email-masked]>
Date: Tue, 4 Feb 2014 23:53:26 +0100

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 <[email-masked]>:

> Sylvain Chouleur <[email-masked]> 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.
>
>