~/.bashrc mit Output und scp

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.