我得到一个.xinitrc包含以下行的文件:
# it will start my window manager
ssh-agent dwm
Run Code Online (Sandbox Code Playgroud)
之后我得到了一个ssh-agent进程,但是当我从 启动终端时,像
$SSH_AGENT_PID和
这样的环境变量$SSH_AUTH_SOCK
不存在dwm。有什么想法吗?
我希望只有一个ssh-agent过程。每次调用都ssh-add应该连接到启动的代理dwm。
ssh-agent输出您需要连接到它的环境变量,通过调用eval您立即将这些变量加载到您的环境中。
为什么ssh-agent自己不能做到这一点?
在Unix中,进程只能修改自己的环境变量,并将它们传递给子进程。它不能修改其父进程的环境,因为系统不允许。这是非常基本的安全设计。
与此相关,请阅读此内容。
因此,将你的`.xinitrc保留为:
eval $(ssh-agent) &
exec dwm
Run Code Online (Sandbox Code Playgroud)