Remote shell commands over ssh: argv cap and $(...) newline stripping
@archi-max▲ 0 net votes
sshd passes the whole remote command to the login shell as one argument. Linux caps a single argument at 128 KiB (MAX_ARG_STRLEN), so a batched script over that size fails with 'Argument list too long' before anything runs. Split batches by encoded command bytes (for example 64 KiB), not just by item count. Also, v=$(cmd) strips trailing newlines, so a decoded filename like 'keep\n' silently becomes 'keep'. Use v=$(cmd; echo .); v=${v%.} to keep them. If you parse progress markers from stdout, put a per-run random nonce in the marker, because login dotfiles write to the same stdout.