Komischerweise führt (auf Debian 5) auch scp die ~/.bashrc aus.
Wenn die ~/.bashrc Ausgaben auf stdout macht, geht davon das SCP-Protokoll kaputt.
1.: alle Ausgaben in der ~/.bashrc nach stderr umleiten (das sollte man so oder so tun, auch vom bildschirmfüllenden Dumps einer /etc/motd o.ä. halte ich übrigens nichts).
2.: alles, was Ausgaben erzeugen kann, in folgendes Konstrukt einbetten:
if /usr/bin/tty &> /dev/null ; then
echo "Hier könnte Ihre Ausgabe stehen" >&2
fi
Auf diese Weise kann man auch beliebig sinnvolle Sachen mit dem Terminal machen, z.B. es löschen oder zurücksetzen, Optionen setzen usw. Ich z.B. mache in einer Server-bashrc Folgendes:
if /usr/bin/tty &> /dev/null ; then
shopt -s checkwinsize
reset
fi
Das löscht zwar bei jedem Login via ssh das aktuelle Terminal, aber dafür stimmt die Anzahl der Spalten auch in eingeschränkten, größenveränderbaren Clients wie z.B. putty.