실행 ssh-agent
하려면 사용해야합니다
eval $(ssh-agent)
왜 eval
출력 해야 ssh-agent
합니까?
내가 그냥 실행할 수 있도록 설계되지 않은 이유는 무엇입니까?
참고 : 백틱 (`)은 더 이상 사용되지 않아 제거되었습니다. 예를 들어 여기에서 자세한 내용을 읽을 수 있습니다 .
누가 eval을 사용해야한다고 말합니까? 이것을 지시하는 것은 무엇입니까? 조금 더 많은 맥락이 도움이 될 것입니다.
—
0xSheepdog
@ 0xSheepdog,
—
Jasonwryan
man
시작 페이지 ...
유스 케이스가 매뉴얼 페이지에 문서화 된 것 같습니다. 에 관해서는 "왜 특정한 방식으로 설계되었습니다" ... 어깨를 으쓱를 .
—
0xSheepdog
다시 말하지만, 이것은
—
michael
ssh-agent
"이런 방식으로 설계된"것이 아니라 유닉스 / 리눅스 ssh-agent
입니다. 쉘의 자식 프로세스에서 실행 되기 때문 입니다. 자식 프로세스는 부모 프로세스를 수정할 수 없습니다. 그러나 함수는 현재 프로세스에서 실행되기 때문에 가능합니다. 따라서 do_set_ssh_agent() { eval
ssh-agent 함수를 작성할 ; }
수 있으며 간단하게 다음과 같이 실행할 수 있습니다 $ do_set_ssh_agent
. 그러나 "프로그램"은 (일반적으로) 리눅스 / 유닉스에서 "기능"으로 설치되지 않습니다. 대신, 프로그램은 파일로 설치되며, 언급 한 바와 같이 하위 프로세스에서 실행됩니다. (소싱 스크립트는 예외이지만 ssh-agent는 바이너리입니다.)