Widziałem pytania i odpowiedzi dotyczące konieczności podwójnego ucieczki argumentów do zdalnych poleceń ssh. Moje pytanie brzmi: dokładnie gdzie i kiedy wykonuje się drugie parsowanie?
Jeśli uruchomię następujące:
$ ssh otherhost pstree -a -p
W danych wyjściowych widzę następujące:
|-sshd,3736
| `-sshd,1102
| `-sshd,1109
| `-pstree,1112 -a -p
Proces nadrzędny dla polecenia zdalnego ( pstree) polega na tym sshd, że nie wydaje się, aby istniała tam jakaś powłoka, która analizowałaby argumenty wiersza poleceń dla polecenia zdalnego, więc nie wydaje się, że konieczne byłoby podwójne cytowanie lub zmiana znaczenia ( ale na pewno jest). Jeśli zamiast tego najpierw ssh tam i uzyskać powłokę logowania, a następnie uruchomić pstree -a -pwidzę następujące dane wyjściowe:
├─sshd,3736
│ └─sshd,3733
│ └─sshd,3735
│ └─bash,3737
│ └─pstree,4130 -a -p
Widać więc, że istnieje tam bashpowłoka, która w takim przypadku przeprowadzałaby analizę wiersza poleceń. Ale w przypadku, gdy używam polecenia zdalnego bezpośrednio, wydaje się, że nie ma powłoki, więc dlaczego podwójne cytowanie jest konieczne?