为什么eval
语句返回
Illegal variable name
$ eval "$(ssh-agent -s)"
Illegal variable name.
为什么eval
语句返回
Illegal variable name
$ eval "$(ssh-agent -s)"
Illegal variable name.
试试$ eval "ssh-agent"
吧。
正确的命令是
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
使用它们来创建/执行两个命令
- 结果:您有两个环境变量告诉每个进程如何连接到代理。
在 .csh 或 .tcsh 中,将命令的结果插入另一个命令(如 eval)的语法是反引号,因此必要的命令似乎是
eval `ssh-agent`
这会设置两个环境变量并打印代理 PID,而不是给出“非法变量名”错误