6

为什么eval语句返回

Illegal variable name

$ eval "$(ssh-agent -s)"
Illegal variable name.
4

3 回答 3

9

试试$ eval "ssh-agent"吧。

于 2015-01-08T14:44:34.727 回答
2

正确的命令是

eval $(ssh-agent)

(没有引号!)

背景:ssh-agent发送两行代码到stdout

SSH_AUTH_SOCK=/tmp/ssh-xxxxxxxxx/agent.nnnn; export SSH_AUTH_SOCK;
SSH_AGENT_PID=22414; export SSH_AGENT_PID;

其中/tmp/ssh-xxxxxxxx/agent.nnnn是一个用作连接代理的套接字的文件,第二行包含代理进程的PID。

$(command)包含这两行并eval使用它们来创建/执行两个命令
- 结果:您有两个环境变量告诉每个进程如何连接到代理。

于 2015-11-01T20:09:46.627 回答
0

在 .csh 或 .tcsh 中,将命令的结果插入另一个命令(如 eval)的语法是反引号,因此必要的命令似乎是

eval `ssh-agent`

这会设置两个环境变量并打印代理 PID,而不是给出“非法变量名”错误

于 2022-02-05T20:55:53.840 回答