ในการวิ่งssh-agent
ฉันต้องใช้
eval $(ssh-agent)
ทำไมฉันถึงต้องeval
ส่งออกของssh-agent
?
ทำไมมันไม่ได้ออกแบบมาเพื่อที่ฉันจะสามารถเรียกใช้มันได้
หมายเหตุ: ลบ Backticks (`) ออกเนื่องจากถูกเลิกใช้แล้ว คุณสามารถอ่านเพิ่มเติมได้ที่นี่เช่น
man
หน้านี้เพื่อเริ่มต้น ...
ssh-agent
ว่า "ออกแบบแบบนี้" เป็น unix / linux เพราะssh-agent
ทำงานในกระบวนการลูกของเชลล์ กระบวนการลูกไม่สามารถปรับเปลี่ยนกระบวนการหลักได้ แต่ฟังก์ชั่นสามารถ: เพราะมันทำงานในกระบวนการปัจจุบัน ดังนั้นคุณสามารถเขียนฟังก์ชั่น: do_set_ssh_agent() { eval
ตัวแทน ssh ; }
และที่อาจจะเรียกง่าย ๆ $ do_set_ssh_agent
ว่า: แต่ "โปรแกรม" ไม่ได้ติดตั้ง (โดยทั่วไป) เป็น "ฟังก์ชั่น" ใน linux / unix; แต่โปรแกรมจะถูกติดตั้งเป็นไฟล์ซึ่งตามที่กล่าวไว้ให้เรียกใช้ในกระบวนการลูก (Sourcing สคริปต์เป็นข้อยกเว้น แต่ตัวแทน ssh เป็นไบนารี.)