Saya telah melihat pertanyaan dan jawaban tentang perlunya meloloskan diri dari argumen ke perintah ssh jarak jauh. Pertanyaan saya adalah: Di mana dan kapan parsing kedua dilakukan?
Jika saya menjalankan yang berikut ini:
$ ssh otherhost pstree -a -p
Saya melihat yang berikut di output:
|-sshd,3736
| `-sshd,1102
| `-sshd,1109
| `-pstree,1112 -a -p
Proses induk untuk perintah jarak jauh ( pstree
) adalah sshd
, tampaknya tidak ada shell di sana yang akan mem-parsing argumen baris perintah ke perintah jarak jauh, sehingga sepertinya tidak perlu kutip ganda atau melarikan diri ( tapi itu pasti). Jika sebaliknya saya ssh di sana terlebih dahulu dan mendapatkan shell login, lalu jalankan pstree -a -p
saya melihat yang berikut di output:
├─sshd,3736
│ └─sshd,3733
│ └─sshd,3735
│ └─bash,3737
│ └─pstree,4130 -a -p
Jadi jelas ada bash
shell di sana yang akan melakukan parsing baris perintah dalam kasus itu. Tetapi kasus di mana saya menggunakan perintah jarak jauh secara langsung, sepertinya tidak ada shell, jadi mengapa pengutipan ganda diperlukan?