Keine der obigen Antworten kann die Login-Shell von ssh umgehen. Sie können eine vollständige Befehlszeile übergeben und daher die Remote-Shell ausführen, um den Befehl zu verarbeiten und die Arbeitsumgebung für den Befehl festzulegen. Das ist, was Shells sind und es ist der Unix-Weg. Sie hätten alle möglichen Kompatibilitätsprobleme, wenn Sie versuchen würden, etwas ohne Shell auszuführen. Ebenso sollte der Versuch, ein Steuerelement-C auszuführen, dasselbe tun wie der Aufruf von exit, was das Verhalten ist, das Sie vermeiden möchten. Wenn bash fortfährt, ist es ein Fehler. Warum die Leute immer wieder sagen, dass auf der Manpage etwas anderes steht, um es zu zitieren, weil auf meiner Manpage nichts dergleichen steht.
Außerdem hat die Angabe von / bin / sh auf den meisten Linux-Systemen NICHTS zu bedeuten, da dies nur ein Symlink zu bash ist!
Willst du testen? Fügen Sie "echo" -Anweisungen zu ".bashrc" und ".profile" hinzu und sehen Sie, welche ausgeführt werden. Ich tat. Hier sind die Ergebnisse.
ssh user@host
wird ausgeführt .bash_profile
ssh user@host /bin/bash
wird ausgeführt .bashrc, aber es denkt, es ist nicht interaktiv (keine Eingabeaufforderung).
ssh -t user@host /bin/bash
führt .bashrc zweimal aus ... einmal bei der Anmeldung, einmal für den übergebenen Befehl. Wenn Sie also eine beliebige Shell angeben, wird immer die erste ausgeführt.
ssh -T user@host
Entspricht der Angabe von -T oder -t überhaupt nicht.
Wenn Sie jetzt bemerken, werden auf MEINEM System nicht beide Dateien ausgeführt, sondern nur die eine oder die andere. Das ursprüngliche Poster enthält jedoch eine Zeile in .bash_profile, in der .bashrc ausgeführt wird, sodass .bashrc immer ausgeführt wird, egal was passiert. Hätte diese Zeile nicht dort setzen sollen! Wenn diese Linie nicht existiert hätte, hättest du kein Problem gehabt.
Sie müssen einen anderen Weg finden oder einen Administrator finden. Dafür sind Admins da.
[ -z "$PS1" ] && return
am Anfang von ./bashrc hinzufügen. Auf diese Weise stoppt scp das Parsen von .bashrc nach der ersten Zeile und Sie können es im Notfall überschreiben.