!["ssh-agent dwm"은 .xinitrc에서 시작하지만 환경 변수가 설정되지 않았습니다.](https://linux55.com/image/183334/%22ssh-agent%20dwm%22%EC%9D%80%20.xinitrc%EC%97%90%EC%84%9C%20%EC%8B%9C%EC%9E%91%ED%95%98%EC%A7%80%EB%A7%8C%20%ED%99%98%EA%B2%BD%20%EB%B3%80%EC%88%98%EA%B0%80%20%EC%84%A4%EC%A0%95%EB%90%98%EC%A7%80%20%EC%95%8A%EC%95%98%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
.xinitrc
다음 줄이 포함된 파일을 얻습니다 .
# it will start my window manager
ssh-agent dwm
그 후 프로세스를 얻었지만 터미널에서 실행했을 때
ssh-agent
및 같은 환경 변수가 존재하지 않았습니다. 어떤 아이디어가 있나요?$SSH_AGENT_PID
$SSH_AUTH_SOCK
dwm
프로세스가 하나만 있었으면 좋겠습니다 ssh-agent
. 각 호출은 ssh-add
시작된 에이전트에 연결되어야 합니다 dwm
.
답변1
ssh-agent
연결하는 데 필요한 환경 변수를 출력합니다. 이를 eval
호출하여 환경에 즉시 로드합니다.
왜 ssh-agent
나는 이것을 스스로 할 수 없습니까?
Unix에서 프로세스는 자신의 환경 변수만 수정하고 이를 하위 프로세스에 전달할 수 있습니다. 시스템에서 허용하지 않기 때문에 상위 프로세스의 환경을 수정할 수 없습니다. 이는 매우 기본적인 보안 설계입니다.
관련 독서이것.
따라서 `.xinitrc를 다음과 같이 남겨두십시오:
eval $(ssh-agent) &
exec dwm
답변2
dwm .xinitrc
에서 호출하려면 exec를 사용해야 합니다 . 다음은 dwm 프록시를 설정합니다.
exec ssh-agent dwm
startx를 실행한 후 터미널을 열면 에이전트가 로드된 것으로 표시됩니다.