Я читал о том, как работает ssh-agent и как он связан со средой оболочки. Я понимаю, почему мы делаем Eval ssh-agent
сейчас (обычно в / etc / profile) это логично. Однако вывод ssh-agent мне кажется немного неестественным
# 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;
Почему ssh-agent просто не выводит
export SSH_AUTH_SOCK=/tmp/ssh-EQUsXLxh4103/agent.4103;
export SSH_AGENT_PID=4104;
echo Agent pid 4104;
Когда они работают с eval, оба делают одно и то же (т.е. устанавливают переменные env), но последнее менее многословно и более понятно для меня, это просто стиль (многословие первого)? и если так, у стиля есть история / причина? или есть что-то технически другое?
Ответы:
Что такое вывод ssh-agent
sh
синтаксис.export varname=value
конструкция действует вbash
но не признается многими реализациямиsh
тогда какvarname=value; export varname
конструкция есть.источник
Технически,
X=Y; export X
это правильный путь.Но потому что это ненужное многословие,
bash
(так же какsh
а такжеzsh
) обеспечивает ярлыкexport X=Y
, который делает то же самое.На самом деле, я не знаю ни одной оболочки, которая использует
export X
установить переменные окружения, но не понимаетexport X=Y
, но все же использование более многословного способа считается более переносимым.источник