СШ-Агент Баш и Эвал и Энв

1

Я читал о том, как работает 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), но последнее менее многословно и более понятно для меня, это просто стиль (многословие первого)? и если так, у стиля есть история / причина? или есть что-то технически другое?

Mâtt Frëëman
источник
BASH - не единственная оболочка. Люди, использующие другие оболочки, тоже хотят использовать SSH.
Zoredache

Ответы:

2

Что такое вывод ssh-agent sh синтаксис. export varname=value конструкция действует в bash но не признается многими реализациями sh тогда как varname=value; export varname конструкция есть.

jw013
источник
0

Технически, X=Y; export X это правильный путь.

Но потому что это ненужное многословие, bash (так же как sh а также zsh ) обеспечивает ярлык export X=Y, который делает то же самое.

На самом деле, я не знаю ни одной оболочки, которая использует export X установить переменные окружения, но не понимает export X=Y, но все же использование более многословного способа считается более переносимым.

aland
источник