Ok, LOL, acabei de descobrir qual é o problema.
Como gosto muito de vacas, coloquei fortune | cowsay
no topo do meu arquivo .bashrc
, o que produz uma saída como a seguinte ao iniciar o bash
:
_______________________________________
< You will lose an important disk file. >
---------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Está tudo bem (e às vezes engraçado) ao executar bash
interativamente. No entanto, o bash lê ~/.bashrc
quando é interativo e não um shell de login, ou quando é um shell de login e seu processo pai é rshd
ou sshd
. Quando você executa scp
, o servidor inicia um shell que inicia uma instância scp
remota. A saída de .bashrc
confunde scp
porque é enviada da mesma forma que os dados do protocolo scp
são enviados. Este é aparentemente um bug conhecido, veja aqui para mais detalhes.
Observe também que os sublinhados que mencionei na pergunta são os da linha superior do balão de texto.
Portanto, a solução era simples: coloquei o seguinte na parte superior de .bashrc
na máquina remota (destino):
# If not running interactively, don't do anything
[[ $- == *i* ]] || return
Esta linha está presente no padrão .bashrc
, mas foi desativada devido a minhas muitas edições (aparentemente descuidadas).