“ssh-agent dwm”从.xinitrc启动,但未设置环境变量

“ssh-agent dwm”从.xinitrc启动,但未设置环境变量

我得到一个.xinitrc包含以下行的文件:

# it will start my window manager
ssh-agent dwm

之后我得到了一个进程,但是 当我从 启动终端时,像和 这样 ssh-agent的环境变量 不存在。有什么想法吗?$SSH_AGENT_PID$SSH_AUTH_SOCKdwm

我希望只有一个ssh-agent过程。每次调用都ssh-add应该连接到启动的代理dwm

答案1

ssh-agent输出您需要连接到它的环境变量,通过调用eval您立即将这些变量加载到您的环境中。

为什么ssh-agent自己不能做到这一点?

在Unix中,进程只能修改自己的环境变量,并将它们传递给子进程。它不能修改其父进程的环境,因为系统不允许。这是非常基本的安全设计。

与此相关的阅读

因此,将你的`.xinitrc保留为:

eval $(ssh-agent) &
exec dwm

答案2

在你的.xinitrcdwm 中应该用 exec 调用。以下为我设置了 dwm 代理:

exec ssh-agent dwm

运行 startx 然后打开终端会显示代理已加载。

相关内容