Ho visto le domande e le risposte sulla necessità di sfuggire al doppio degli argomenti ai comandi remoti di ssh. La mia domanda è: esattamente dove e quando viene eseguita la seconda analisi?
Se eseguo quanto segue:
$ ssh otherhost pstree -a -p
Vedo quanto segue nell'output:
|-sshd,3736
| `-sshd,1102
| `-sshd,1109
| `-pstree,1112 -a -p
Il processo parent per il comando remoto ( pstree
) è sshd
che non sembra esserci alcuna shell che analizzi gli argomenti della riga di comando con il comando remoto, quindi non sembra che siano necessarie doppie virgolette o escape ( ma sicuramente lo è). Se invece ho prima ssh lì e ottengo una shell di login, quindi eseguo pstree -a -p
vedo quanto segue nell'output:
├─sshd,3736
│ └─sshd,3733
│ └─sshd,3735
│ └─bash,3737
│ └─pstree,4130 -a -p
Quindi chiaramente c'è una bash
shell lì che farebbe l'analisi della riga di comando in quel caso. Ma nel caso in cui utilizzo direttamente un comando remoto, non sembra esserci una shell, quindi perché è necessaria la doppia virgoletta?