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

2 ответа2

2

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .