Để chạy ssh-agent
tôi phải sử dụng
eval $(ssh-agent)
Tại sao tôi phải eval
đầu ra ssh-agent
?
Tại sao nó không được thiết kế để tôi có thể chạy nó?
Lưu ý: Backticks (`) bị xóa vì chúng không được dùng nữa. Bạn có thể đọc thêm về nó ở đây chẳng hạn .
man
trang, để bắt đầu ...
ssh-agent
là "được thiết kế theo cách này", đó là unix / linux, vì ssh-agent
chạy trong một tiến trình con của trình bao. Các tiến trình con không thể sửa đổi các tiến trình cha. Nhưng một chức năng có thể: bởi vì nó chạy trong quy trình hiện tại. Vì vậy, bạn có thể viết một hàm: do_set_ssh_agent() { eval
ssh-agent ; }
và có thể được chạy đơn giản là : $ do_set_ssh_agent
. Nhưng "chương trình" không (thường) được cài đặt là "hàm" trong linux / unix; thay vào đó, các chương trình được cài đặt dưới dạng tệp, như đã đề cập, chạy trong một tiến trình con. (Nguồn kịch bản là một ngoại lệ, nhưng ssh-agent là nhị phân.)