Tôi đã thấy các câu hỏi và câu trả lời về việc cần phải thoát hai đối số thành các lệnh ssh từ xa. Câu hỏi của tôi là: Chính xác thì việc phân tích cú pháp thứ hai được thực hiện ở đâu và khi nào?
Nếu tôi chạy như sau:
$ ssh otherhost pstree -a -p
Tôi thấy sau đây trong đầu ra:
|-sshd,3736
| `-sshd,1102
| `-sshd,1109
| `-pstree,1112 -a -p
Quá trình cha của lệnh từ xa ( pstree
) là sshd
, dường như không có bất kỳ shell nào ở đó sẽ phân tích cú pháp các đối số dòng lệnh cho lệnh từ xa, do đó dường như không cần phải trích dẫn hoặc thoát hai lần ( nhưng nó chắc chắn là). Nếu thay vào đó tôi ssh ở đó trước và nhận được một vỏ đăng nhập, và sau đó chạy pstree -a -p
tôi thấy sau đây trong đầu ra:
├─sshd,3736
│ └─sshd,3733
│ └─sshd,3735
│ └─bash,3737
│ └─pstree,4130 -a -p
Vì vậy, rõ ràng có một bash
shell ở đó sẽ thực hiện phân tích cú pháp dòng lệnh trong trường hợp đó. Nhưng trường hợp tôi sử dụng lệnh từ xa trực tiếp, dường như không có vỏ, vậy tại sao trích dẫn kép lại cần thiết?