From: Max Nikulin <manikulin@gmail.com>
To: emacs-orgmode@gnu.org
Subject: Re: bash source code block: problem after ssh commands
Date: Sat, 18 Nov 2023 15:04:58 +0700 [thread overview]
Message-ID: <uj9r7d$a2b$1@ciao.gmane.io> (raw)
In-Reply-To: <87sf54bs61.fsf@localhost>
On 17/11/2023 17:17, Ihor Radchenko wrote:
> I was only able to reproduce your problem with ssh asking a password.
> We are discussing the reproduced case.
I see bash vs. dash difference with public key authorization, so no need
for password prompts. I have not figured out how to construct an example
without ssh since this command *may* read stdin, but does not do it in a
same way as e.g. cat(1). Perhaps a small program performing single
non-blocking read will allow it. The following behavior observed for a
regular shell prompt, Emacs is not involved. Debian 12 bookworm.
cat ssh-script.sh
ssh -p 2222 127.0.0.1 'echo foo>/tmp/foo'
echo done
Read commands from a script file:
dash ssh-script.sh
done
bash ssh-script.sh
done
Read commands from stdin
dash <ssh-script.sh
done
bash <ssh-script.sh
# no output
I have not expected this difference.
dash reads a block from stdin (whole file in this case) and interprets
commands.
BASH reads just the ssh command and executes it. SSH reads "echo done"
from stdin, so when control is returned to bash, stdin is exhausted and
no commands remain to execute by BASH. SSH can not "unread" part of
input not consumed by the remote command despite it might be possible in
the case of the regular file as stdin.
Actually bash reads the whole script file as well when called as it is
shown above, but it calls lseek before executing ssh. To make difference
more apparent (e.g. for strace), force creation of pipe(7) for which
lseek is not supported
cat ssh-script.sh | strace -o /tmp/bash.strace bash
I am unsure if POSIX specifies exact behavior of shell when commands are
read from stdin. I think, the suggested earlier "-n" ssh option (or
</dev/null) should be used to make intentions clear: ssh should not read
stdin. There is too much room for heuristics: interactive vs.
non-interactive shell, a terminal vs. a regular file vs. a pipe as
standard input. Be explicit to get reliable behavior.
ssh -n user@host 'command'
or
tar cvf - . | ssh user@host 'tar xvf -'
without "-n" when ssh needs stdin and it is explicitly specified.
I do not think it is an Org or an Emacs bug. It is rather POSIX vs. bash
vs. dash issue.
next prev parent reply other threads:[~2023-11-18 8:06 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-25 11:17 bash source code block: problem after ssh commands Alain.Cochard
2023-10-25 15:12 ` Leo Butler
2023-10-25 16:14 ` Alain.Cochard
2023-10-25 16:47 ` Leo Butler
2023-10-25 16:59 ` yaxp
2023-10-26 8:44 ` Ihor Radchenko
2023-10-26 13:23 ` Alain.Cochard
2023-10-26 13:44 ` Ihor Radchenko
2023-10-27 18:26 ` Alain.Cochard
2023-10-28 5:22 ` Max Nikulin
2023-10-30 10:50 ` Bruno Barbier
2023-11-06 13:32 ` Ihor Radchenko
2023-11-06 18:25 ` Matt
2023-11-07 8:55 ` Ihor Radchenko
2023-11-08 19:41 ` Matt
2023-11-09 12:14 ` Ihor Radchenko
2023-11-09 17:48 ` Matt
2023-11-15 16:32 ` Matt
2023-11-15 18:04 ` Matt
2023-11-16 9:32 ` Ihor Radchenko
2023-11-16 19:03 ` Matt
2023-11-16 19:46 ` Alain.Cochard
2023-11-16 20:54 ` Matt
2023-11-17 9:22 ` Ihor Radchenko
2023-11-17 9:55 ` Alain.Cochard
2023-11-17 10:17 ` Ihor Radchenko
2023-11-17 15:32 ` Leo Butler
2023-11-17 15:47 ` Bruno Barbier
2023-11-18 10:37 ` Ihor Radchenko
2023-11-21 19:01 ` Bruno Barbier
2023-11-22 17:06 ` Max Nikulin
2023-11-19 4:17 ` Non-emacs shell (Re: bash source code block: problem after ssh commands) Max Nikulin
2023-11-21 15:33 ` Bruno Barbier
2023-11-18 8:04 ` Max Nikulin [this message]
2023-11-18 10:43 ` bash source code block: problem after ssh commands Ihor Radchenko
2023-11-18 16:18 ` Max Nikulin
2023-11-17 22:07 ` Matt
2023-11-18 3:11 ` Forget about "bash -c bash file.sh" (Re: bash source code block: problem after ssh commands) Max Nikulin
2023-11-18 8:11 ` Matt
2023-11-18 8:29 ` Bruno Barbier
2023-11-18 8:43 ` Matt
2023-11-18 8:54 ` Bruno Barbier
2023-11-18 9:09 ` Matt
2023-11-18 9:11 ` Bruno Barbier
2023-11-18 10:47 ` Ihor Radchenko
2023-11-18 8:19 ` bash source code block: problem after ssh commands Bruno Barbier
2023-11-18 9:02 ` Matt
2023-11-18 15:51 ` Matt
2023-10-26 14:44 ` Russell Adams
2023-10-27 11:47 ` Alain.Cochard
2023-11-06 18:01 ` Matt
2023-11-07 0:51 ` Alain.Cochard
2023-11-18 8:09 ` Max Nikulin
2023-11-18 8:36 ` Bruno Barbier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='uj9r7d$a2b$1@ciao.gmane.io' \
--to=manikulin@gmail.com \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).