SSh-Agent Bash e Eval e Env

1

Eu tenho lido sobre como o agente ssh funciona e como ele se relaciona com o ambiente do shell. Eu entendo porque fazemos eval ssh-agent agora (geralmente em / etc / profile), faz sentido lógico. No entanto, a saída do ssh-agent parece um pouco antinatural para mim

# The bad way just (env dont get set, just printed) so i can see its output
[matt@laparchie rc.d]$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-EQUsXLxh4103/agent.4103; export SSH_AUTH_SOCK;
SSH_AGENT_PID=4104; export SSH_AGENT_PID;
echo Agent pid 4104;

Por que o ssh-agent não produz apenas

export SSH_AUTH_SOCK=/tmp/ssh-EQUsXLxh4103/agent.4103;
export SSH_AGENT_PID=4104;
echo Agent pid 4104;

Quando bombeado para eval, ambos fazem o mesmo (ou seja, definindo variáveis env), mas o último é menos detalhado e mais claro para mim, é apenas um estilo (a verbosidade do primeiro)? e se assim for, o estilo tem uma história / razão? ou há algo tecnicamente diferente?

    
por Mâtt Frëëman 14.09.2011 / 05:53

2 respostas

2

Qual saída do agente ssh é a sintaxe sh . A construção export varname=value é válida em bash , mas não é reconhecida por muitas implementações de sh , enquanto a construção varname=value; export varname é.

    
por 14.09.2011 / 19:10
0

Tecnicamente, X=Y; export X é o caminho certo.

Mas como ele é desnecessário, bash (assim como sh e zsh ) fornece o atalho export X=Y , que faz exatamente o mesmo.

Na verdade, eu não conheço nenhum shell, que usa export X para definir variáveis de ambiente, mas não entende export X=Y , mas ainda usando uma maneira mais detalhada é considerado mais portátil.

    
por 14.09.2011 / 19:42