Ich habe die Fragen und Antworten über die Notwendigkeit gesehen, die Argumente für Remote-SSH-Befehle doppelt zu umgehen. Meine Frage ist: Genau wo und wann wird die zweite Analyse durchgeführt?
Wenn ich Folgendes ausführe:
$ ssh otherhost pstree -a -p
Ich sehe folgendes in der Ausgabe:
|-sshd,3736
| `-sshd,1102
| `-sshd,1109
| `-pstree,1112 -a -p
Der übergeordnete Prozess für den Remote-Befehl ( pstree
) lautet sshd
: Es scheint dort keine Shell zu geben, die die Befehlszeilenargumente für den Remote-Befehl analysiert. Es scheint also nicht so, als wäre ein doppeltes Anführungszeichen oder ein Escapezeichen erforderlich ( aber es ist definitiv). Wenn ich stattdessen zuerst dort ssh und eine Login-Shell bekomme und dann starte, pstree -a -p
sehe ich Folgendes in der Ausgabe:
├─sshd,3736
│ └─sshd,3733
│ └─sshd,3735
│ └─bash,3737
│ └─pstree,4130 -a -p
Es gibt also eindeutig eine bash
Shell, die in diesem Fall das Parsen von Befehlszeilen durchführen würde. In dem Fall, in dem ich einen Remote-Befehl direkt verwende, scheint es keine Shell zu geben. Warum ist also ein doppeltes Anführungszeichen erforderlich?