Warum führt "echo '' 'in / etc / bashrc dazu, dass scp hängt?

5

Ich kopiere Verzeichnisse von einem Snow Leopard-Computer auf einen Tiger-Computer mit scp -rund aus irgendeinem Grund scheint es, dass die letzte Zeile des Zielcomputers (Tiger) /etc/bashrc( echo '') dazu führt, dass scp hängt. Wenn es gelobt wird, funktioniert es wie erwartet.

Warum?

Ich habe dieses Verhalten noch nie auf einem meiner Slackware-, Ubuntu-, Gentoo-, SuSE-, Mandrake- oder sogar Apple-Computer gesehen. Handelt es sich um einen Teil eines aktuellen 10.6-Sicherheitsupdates? scparbeitete bis vor kurzem wie erwartet mit dieser Linie.

msanford
quelle

Antworten:

2

Dieser sieht aus wie Ihr Problem:

Sie sollten wirklich keine Inhalte in Ihrem Profil ausgeben, wenn Sie nicht interaktiv vorgehen. Es scheint, dass SCP empfindlich dafür ist (möglicherweise, abhängig von vielen Faktoren, bin ich mir sicher). Sie können die Interaktivität folgendermaßen testen:

Text als Referenz kopiert:

To determine within a startup script whether Bash is running 
interactively or not, examine the variable $PS1; it is unset in non-
interactive shells, and set in interactive shells. Thus:

if [ -z "$PS1" ]; then
        echo This shell is not interactive
else
        echo This shell is interactive
fi

Alternatively, startup scripts may test the value of the `-' special 
parameter. It contains i when the shell is interactive. For example:

case "$-" in
*i*)    echo This shell is interactive ;;
*)  echo This shell is not interactive ;;
esac
dpb
quelle
Dieses Ausgabeproblem ist für mich völlig neu. Außerdem hat Fortune-Mod seit der Geburt von Fink Vermögen aus / etc / bashrc ausgespuckt und scp hat es nie ausgegeben. Trotzdem halte ich Ihren Rat für weise und nehme ihn an. Vielen Dank!
msanford